作成対象
今回は簡単な例でいこうと思います。
- バケットの作成
- パブリックアクセスの拒否
フォルダ構成等は若干変わりますが、githubはこちらです。
GitHub - Teshima-Tatsuya/terraform-s3-sample: terraform-s3-sample
terraform-s3-sample. Contribute to Teshima-Tatsuya/terraform-s3-sample development by creating an account on GitHub.
事前準備
フォルダ構成はこんな感じです。
.
├── terraform.tf
├── main.tf
└── modules
└── s3
├── aws_s3_bucket.tf
├── aws_s3_account_public_access_block.tf
└── aws_s3_bucket_public_access_block.tf
まずは、terraformの基本的な設定から。
terraformのバージョンは0.15以降であればOKです。
awsプロバイダバージョンは3.44以上を指定しています。(これよりも前のバージョンでもおそらく大丈夫です。)
terraform {
required_version = ">= 0.15"
required_providers {
aws = ">=3.44.0"
}
}
provider "aws" {
region = "ap-northeast-1"
profile = "terraform"
}
profileをterraformにしているので、事前に~/.aws/credentialsに以下を設定しておきましょう。
事前にIAMでユーザを作成するのも忘れずに。
[terraform]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
S3バケットの作成
terraformでS3バケットを作成します。
今回はmoduleとして作成します。
こうすることで再利用性があがります。
module "s3" {
source = "./modules/s3"
}
S3のbucket名は全世界でユニークである必要があるので、注意しましょう。
resource "aws_s3_bucket" "this" {
bucket = "teshima-sample-bucket"
tags = {
Name = "sample"
}
}
次にパブリックアクセスをブロックする設定
resource "aws_s3_bucket_public_access_block" "this" {
bucket = aws_s3_bucket.this.bucket
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
resource "aws_s3_account_public_access_block" "this" {
block_public_acls = false
block_public_policy = false
}
AWS環境へ反映
以下のコマンドを打ち、AWS環境に反映しましょう。
planの内容を確認し、問題なければapply
terraform plan
terraform apply
結果確認
以下のような感じになっていると思います。
終わり
コメント