Lambdaにてassume_roleでエラー:The requested DurationSeconds exceeds the 1 hour session limit for roles assumed by role chaining

富松広太 2019年3月29日

先日Lambda内で、assume roleで1時間以上の権限を
取得しようとしたところエラーとなってしまいました。
Lambda単体では、1時間も有効にすることはまず無いのですが、
stepfunctionsで処理待ち等をする際に、長時間有効な権限がほしいと思い
利用しようと試みたのが発端です。

エラー内容

  “errorMessage”: “An error occurred (ValidationError) when calling the AssumeRole operation: The requested DurationSeconds exceeds the 1 hour session limit for roles assumed by role chaining.”,
上記エラーから「role chaining」=「ロールの連鎖」が1時間以上できないことが分かります。
ドキュメントを見ると、ロールの連鎖(Lamdbaのロール+assume role)は
最長1時間までと記載がありました。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_terms-and-concepts.html
アクセスキーを埋め込むやり方だと、
1時間以上のリクエストが成功するかもしれないのですが、
今回はセキュリティ要件的にそちらがNGでした。
そのためstepfunctionsの組合せを変更する方法で回避しました。
誰かの参考になれば幸いです。