1
1

構築に時間がかかるリソース(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ロールの最大セッション時間を変更します。

スクリーンショット 2024-07-03 9.54.59.png

スクリーンショット 2024-07-03 10.15.18.png

あとはワークフローの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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1