はじめに
AWSのS3をTerraformのbackend(tfstateファイルの保管場所)として利用するために必要最低限の設定についてまとめました。
backend保管のイメージ
tfstateファイルをローカル保存ではなく、S3内に保存することでチームでtfstateファイルを共有可能です。
S3 の設定
1.S3 Bucket の作成
項目 | 設定 |
---|---|
Bucket name | 任意の名前 |
AWS Region | ap-northeast-1 |
Object Ownership | ACLs enabled |
Block Public Access settings for this bucket | Block all public access |
Bucket Versioning | Enable |
Default encryption | Disable |
Advanced settings | Disable |
Terraformの公式ドキュメントを確認すると、Bucket Versioning を有効化にすることが推奨されています。
Warning! It is highly recommended that you enable Bucket Versioning on the S3 bucket to allow for state recovery in the case of accidental deletions and human error.
引用 : https://developer.hashicorp.com/terraform/language/settings/backends/s3
2.Bucket policy の設定
対象のIAMユーザーからのみS3 Bucket へのアクセスを通すようにする。
※今回は、必要最低限の設定のため、IAMユーザーとしています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::************:user/Terraform"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::terraform-backend1103/*"
}
]
}
AWS Policy Generatorを利用すれば、直接JSONを記述しなくてもコードを生成することが可能。
項目 | 設定 |
---|---|
Select Policy Type | S3 Bucket Policy |
Effect | Allow |
AWS Service | 許可したいIAMユーザーのARN |
Actions | Block all public access |
Amazon Resource Name (ARN) | backendを格納するS3のARN |
参考