📝
TerraformのS3のモジュールファイル
S3のモジュールファイル
S3.tfファイル
# 画像保存用バケットの設定
# アクセス制御はプライベートとしています
resource "aws_s3_bucket" "image_bucket" {
bucket = var.image_bucket_name
}
# 画像保存用バケットにバージョニングを有効化
resource "aws_s3_bucket_versioning" "image_bucket_versioning" {
bucket = aws_s3_bucket.image_bucket.id
versioning_configuration {
status = "Enabled" # バージョニングを有効にする
}
}
# ALBログ保存用バケットの設定
# アクセス制御はプライベートとしています
resource "aws_s3_bucket" "alb_log_bucket" {
bucket = var.alb_log_bucket_name
}
# ALBログ保存用バケットに対するライフサイクル設定
# 365日後にオブジェクトを削除するように設定
resource "aws_s3_bucket_lifecycle_configuration" "alb_log_bucket_lifecycle" {
bucket = aws_s3_bucket.alb_log_bucket.id
rule {
id = "log"
status = "Enabled"
expiration {
days = 365 # 365日後に削除
}
}
}
# サーバーサイド暗号化(SSE)の設定
# AES256アルゴリズムを使用
resource "aws_s3_bucket_server_side_encryption_configuration" "sse_config" {
bucket = aws_s3_bucket.image_bucket.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256" # AES256で暗号化
}
}
}
variables.tfファイル
variable "image_bucket_name" {
description = "画像保存用のS3バケット名"
type = string
}
variable "alb_log_bucket_name" {
description = "ALBログ保存用のS3バケット名"
type = string
}
output.tfファイル
output "image_bucket_arn" {
description = "画像保存用バケットのARN"
value = aws_s3_bucket.image_bucket.arn
}
output "alb_log_bucket_arn" {
description = "ALBログ保存用バケットのARN"
value = aws_s3_bucket.alb_log_bucket.arn
}
providers.tfファイル
# 必要なプロバイダとそのバージョンを定義
terraform {
required_providers {
aws = {
source = "hashicorp/aws" // AWSプロバイダのソース
version = "~> 5.0" // バージョン指定
}
}
}
# AWSプロバイダの設定
provider aws {
region = "ap-northeast-1" // AWSリージョン(東京リージョン)
}
README.mdファイル
S3.tfファイル
リソース名 | 説明 |
---|---|
aws_s3_bucket.image_bucket |
画像保存用のS3バケットを作成します。アクセス制御はプライベートです。 |
aws_s3_bucket_versioning.image_bucket_versioning |
画像保存用のS3バケットにバージョニングを有効にします。 |
aws_s3_bucket.alb_log_bucket |
ALBのログを保存するS3バケットを作成します。アクセス制御はプライベートです。 |
aws_s3_bucket_lifecycle_configuration.alb_log_bucket_lifecycle |
ALBログ保存用のS3バケットに対するライフサイクル設定を行います。365日後にオブジェクトを削除します。 |
aws_s3_bucket_server_side_encryption_configuration.sse_config |
画像保存用のS3バケットにサーバーサイド暗号化(SSE)を設定します。AES256アルゴリズムを使用します。 |
variables.tfファイル
変数名 | 説明 | 型 |
---|---|---|
image_bucket_name |
画像保存用のS3バケット名 | string |
alb_log_bucket_name |
ALBログ保存用のS3バケット名 | string |
output.tfファイル
出力名 | 説明 |
---|---|
image_bucket_arn |
画像保存用バケットのARN |
alb_log_bucket_arn |
ALBログ保存用バケットのARN |
Discussion