Terraformを使ってAWS CloudTrailの証跡を作成し、出力されるログをS3バケットに保存し、そのS3バケットにライフサイクルルールを設定する方法を以下の手順で説明します。
手順
- Terraformのファイル構成を準備
まず初めに、Terraformの構成ファイルを作成します。一般的には以下のようなファイル構成になります。main.tf variables.tf outputs.tf - main.tfの設定
main.tfにCloudTrailの設定、S3バケットの作成、そのライフサイクルルールを追加します。
provider "aws" {
region = "us-west-2" # 任意のAWSリージョンに設定してください
}
# S3バケットの作成
resource "aws_s3_bucket" "cloudtrail_bucket" {
bucket = "my-cloudtrail-bucket-unique-name" # ユニークなバケット名を設定してください
lifecycle_rule {
id = "move-to-glacier"
enabled = true
transition {
days = 30
storage_class = "GLACIER"
}
expiration {
days = 365
}
}
}
# CloudTrailの証跡作成
resource "aws_cloudtrail" "main" {
name = "my-cloudtrail"
s3_bucket_name = aws_s3_bucket.cloudtrail_bucket.bucket
include_global_service_events = true
is_multi_region_trail = true
event_selector {
read_write_type = "All"
include_management_events = true
data_resource {
type = "AWS::S3::Object"
values = ["arn:aws:s3:::my-cloudtrail-bucket-unique-name/"]
}
}
}
# CloudTrailがログを保存できるようにS3バケットポリシーを追加
resource "aws_s3_bucket_policy" "cloudtrail_bucket_policy" {
bucket = aws_s3_bucket.cloudtrail_bucket.id
policy = jsonencode({
Version = "2012-10-17",
Statement = [
{
Effect = "Allow",
Principal = {
Service = "cloudtrail.amazonaws.com"
},
Action = "s3:GetBucketAcl",
Resource = "arn:aws:s3:::${aws_s3_bucket.cloudtrail_bucket.id}"
},
{
Effect = "Allow",
Principal = {
Service = "cloudtrail.amazonaws.com"
},
Action = "s3:PutObject",
Resource = "arn:aws:s3:::${aws_s3_bucket.cloudtrail_bucket.id}/*",
Condition = {
StringEquals = {
"s3:x-amz-acl" = "bucket-owner-full-control"
}
}
}
]
})
}
- variables.tfの定義
variables.tfファイルには、必要に応じて変数を定義できます。variable "region" { description = "The AWS region to deploy to" default = "us-west-2" }昨日のmain.tfのproviderブロックでregionを変数に変更することができます。 - outputs.tfの定義
outputs.tfファイルには、出力値を定義します。ここではS3バケットの名前とCloudTrailの名前を出力します。
output "cloudtrail_bucket_name" {
value = aws_s3_bucket.cloudtrail_bucket.bucket
}
output "cloudtrail_name" {
value = aws_cloudtrail.main.name
}
- Terraformの実行
最後にTerraformの手順を実行してリソースを作成します。terraform init terraform plan terraform apply
この手順で、Terraformを使ってCloudTrailの証跡とそれに対応するS3バケットを作成し、バケットに対してライフサイクルルールを設定できます。30日経過後にS3 Glacierに移動し、365日経過後にS3から削除されるように設定されています。

コメント