💻
[Terraform]profileよりも変数設定を優先する。
事象内容
ARN名など合っているはずなのにも関わらず、ValidationErrorが発生してしまう問題
原因はterraformで設定しているprofile誤りでした。。
(正しいprofile情報を設定することで正常に通りました。)
このようなミスが多いので気をつけよう。
発生条件
- 0.12系から1.Xにterraformをバージョンアップ
- AWS SSO のプロファイルでの実行時
- アクセスキーのプロファイルであれば問題なし(試していないがおそらくスイッチロールのプロファイルでも問題ないかと思われ)
- state rm してからimportしてもNG(ただstateファイルをみるとimport自体はできているという。)
エラー内容
│ Error: error retrieving ALB (arn:aws:elasticloadbalancing:ap-northeast-1:[AWSアカウントID]:loadbalancer/app/alb/XXXXXXXXX): ValidationError: 'arn:aws:elasticloadbalancing:ap-northeast-1:XX' is not a valid load balancer ARN
│ status code: 400, request id: d4a459e0-4706-4b57-a299-4582aed7b255
│
│ with module.elb.aws_lb.web-elb[0],
│ on elb/main.tf line 1, in resource "aws_lb" "main":
│ 1: resource "aws_lb" "main" {
原因
多分これだよね。。(一応コメントしてみたけど)
AWS SSOのプロファイルでもregion情報は記載してあるのに。。
回避方法
AWS SSOのプロファイルでの実行時のみ発生するので
アクセスキーを設定した場合、そっちの認証情報が優先されることを利用する。
- 一時認証払い出し
- 変数設定
export AWS_ACCESS_KEY_ID="AXX"
export AWS_SECRET_ACCESS_KEY="****"
export AWS_SESSION_TOKEN="***"
で設定してから
terraform plan
terraform apply
など成功するようになった。
毎回実行時に読み込み直さないといけないのは面倒だが、現状他回避方法見つからず。。
Discussion