🔥
terragruntのバージョンを上げたらNoSuchBucketPolicyが出るようになった
terragrunt init
などで下記のエラーが発生するようになりました。
ERRO[0001] NoSuchBucketPolicy: The bucket policy does not exist
これは.terraformディレクトリがすでにある場合は、発生しないので、人によっては発生したりしなかったりして厄介です。
terragruntのバージョンはv0.31.0 -> v0.54.12にしました。
と言ってもdockerを使ってるのでalpine/terragrunt:1.6.6
を使うようにしたところでした。
解決方法としては、適当なs3のバケットポリシーを設定するか、
↓の設定を両方とも追加するかでOKでした。
skip_bucket_root_access = true
skip_bucket_enforced_tls = true
ただ、最初から、state用のバケットをterragruntが作成してくれるままに任せる場合は、上記の設定はなくても正常に動作します。その場合は、root_access用のポリシーとhttpsを強制するポリシーを自動で追加してくれます。
サンプルコードは下記になります。
docker-compose.ymlに下記の設定が入っているため、awsのアクセス方法によっては変える必要があるかもしれません。
volumes:
- ~/.aws:/root/.aws
自分は事前にホストマシンで、aws sso loginして試しています。
おまけ
検証中にこんな感じのエラーに遭遇しました。
/terraform/environments/stage/frontend-app # terragrunt init
Remote state S3 bucket watanabe-terraform-state does not exist or you don't have permissions to access it. Would you like Terragrunt to create it? (y/n) y
ERRO[0005] BucketRegionError: incorrect region, the bucket is not in 'ap-northeast-1' region at endpoint '', bucket is in 'ap-northeast-2' region
これはすでにap-northeast-2にwatanabe-terraform-state
というバケットが存在してたための様でした。webのマネジメントコンソール上で確認すると確かに存在してました。
ta-watanabe-terraform-state
に変えると発生しなくなりました。
Discussion