タダです.
AWS で SSO 認証で取得したクレデンシャルを使って terraform を実行した時に下記のエラーがでました.このエラーに対処する方法について本記事にまとめます.
Error: error configuring S3 Backend: Error creating AWS session: profile "hoge" is configured to use SSO but is missing required configuration: sso_region, sso_start_url
エラーが発生した時の AWS CLI Config
冒頭のエラーが発生した時,AWS CLI の Config は下記のような状態でした.
[profile hoge] sso_session = hoge-session sso_account_id = 1234567891011 sso_role_name = AdministratorAccess region = ap-northeast-1 output = json [sso-session hoge-session] sso_start_url = https://hoge.awsapps.com/start sso_region = ap-northeast-1 sso_registration_scopes = sso:account:access
また,aws sso login
を行い,一時認証情報を取得している状態でした.そして,terraform init
を打ったら S3 バックエンドの設定エラーが出ました.sso_region, sso_start_url
がないよというメッセージですが,設定は入れているのにな...最新の設定に追随できてないのかなという感想を持ちました.
❯ aws sts get-caller-identity { "UserId": "xxx:hoge", "Account": "1234567891011", "Arn": "arn:aws:sts::1234567891011:assumed-role/AWSReservedSSO_AdministratorAccess_xxx/hoge" } ❯ terraform init -upgrade Initializing the backend... Upgrading modules... - continuous_apply_codebuild_role in ../module/iam ╷ │ Error: error configuring S3 Backend: Error creating AWS session: profile "hoge" is configured to use SSO but is missing required configuration: sso_region, sso_start_url │ │ ╵
どう対処するか
前置きが長かったのですが,どう対処するかについてです.暫定的には AWS CLI の Config をレガシーにすると回避できます.
[profile hoge] sso_start_url = https://hoge.awsapps.com/start sso_region = ap-northeast-1 sso_session = hoge-session sso_account_id = 1234567891011 sso_role_name = AdministratorAccess region = ap-northeast-1 output = json
できればレガシーは使わないようにしたいと思っていたら issue のコメントに 1.6.0 系にしたら回避できたというコメントを見つけました.そんな記事を書いている前日に 1.6.0 がリリースされました.なら使おうということで使ったらエラーがでなくなったので,これであれば SSO 認証エラーが出ずに済みそうです.
❯ tfenv use 1.6.0 Switching default version to v1.6.0 Switching completed ❯ terraform init -upgrade Initializing the backend... Successfully configured the backend "s3"! Terraform will automatically use this backend unless the backend configuration changes. Upgrading modules... - continuous_apply_codebuild_role in ../module/iam ~中略~ Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
関連情報
まとめ
AWS の自動更新によるトークンプロバイダーの設定で terraform を使おうとするとエラーが出てその対処を行った時の内容をまとめました.