AWS Configを1クリックセットアップで作成するには、AWS Management Consoleからのボタン1つで完了するオプションがありますが、Terraformを使用してそれを自動化したい場合は、いくつかのリソースを設定する必要があります。以下は、Terraformを使用してAWS Configをセットアップするための基本的なコード例です。
前提条件
- Terraform CLIがインストールされている。
- AWSアカウントがあり、適切な認証情報が設定されている。
Terraformのコード例
provider "aws" {
region = "us-west-2" # 使用するリージョンに変更して下さい
}
# AWS Configのロールを作成
resource "aws_iam_role" "config_role" {
name = "aws-config-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
# ロールに必要なポリシーを添付
resource "aws_iam_role_policy_attachment" "config_role_policy" {
role = aws_iam_role.config_role.name
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSConfigRole"
}
# S3バケットの作成 (AWS Configの情報を保存)
resource "aws_s3_bucket" "config_bucket" {
bucket = "my-config-bucket-${var.aws_account_id}"
acl = "private"
versioning {
enabled = true
}
}
# AWS Configのデリバリーチャネルを作成
resource "aws_config_delivery_channel" "config_channel" {
name = "default"
s3_bucket_name = aws_s3_bucket.config_bucket.bucket
depends_on = [
aws_iam_role_policy_attachment.config_role_policy
]
}
# AWS Configのレコーダーを作成
resource "aws_config_configuration_recorder" "config_recorder" {
name = "default"
role_arn = aws_iam_role.config_role.arn
recording_group {
all_supported = true
include_global_resource_types = true
}
depends_on = [
aws_config_delivery_channel.config_channel
]
}
# AWS Configのレコーダーを開始
resource "aws_config_configuration_recorder_status" "config_status" {
name = aws_config_configuration_recorder.config_recorder.name
is_active = true
}
説明
- aws_iam_role: AWS Configが使用するIAMロールを作成します。
- aws_iam_role_policy_attachment: 作成したIAMロールに必要なポリシーを添付します。
- aws_s3_bucket: AWS Configがログを保存するS3バケットを作成します。
- aws_config_delivery_channel: AWS Configの配送チャネルを構成します。このチャネルは構成履歴とスナップショットを指定したS3バケットに送信します。
- aws_config_configuration_recorder: AWS Configの構成レコーダーを設定します。
- aws_config_configuration_recorder_status: レコーダーを有効にします。
使い方
- 上記のコードを
main.tfファイルとして保存します。 - 必要に応じて、適切なAWSリージョンやS3バケット名などを変更します。
- Terraformを初期化し、計画を作成して適用します。
terraform init
terraform plan
terraform apply
このコードを利用することで、AWS Configの基本的なセットアップがTerraformを使用して自動的に行われます。特定のリソースやポリシーの詳細は、必要に応じて調整してください。

コメント