構築に時間がかかるリソース(Aurora)をGitHub Actionsからterraform apply
で作成しようとしたら、1時間くらいでExpiredToken
エラーが出てワークフローが落ちました。
│ Error: failed to upload state: operation error S3: PutObject, https response error StatusCode: 400, RequestID: ********, HostID: ********, api error ExpiredToken: The provided token has expired.
このエラーは、TerraformがAWSの状態ファイルをS3にアップロードしようとした際に、IAMロールのセッションが既に期限切れになっていたために発生しました。
解決案
まず、ワークフローでAssumeRoleするIAMロールの最大セッション時間を変更します。
あとはワークフローのAWSクレデンシャルを設定するステップで、role-duration-seconds
を変更すればOKです。
- name: Setup AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ap-northeast-1
role-to-assume: ${{ secrets.AWS_IAM_ROLE_TO_ASSUME }}
role-session-name: GitHubActions
role-duration-seconds: 7200 # 2 h