📝

TerraformのS3のモジュールファイル

2023/10/29に公開

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