このワークスペースには4つのルートモジュールがあります:
backend-resources/: Terraform backend用のS3 + DynamoDBrds/: AWS RDS + ネットワークzerotrust/: Cloudflare Zero Trust(Tunnel)ecs-cloudflared/: ECS Fargate上のCloudflaredクライアント
- backend-resources を先に適用してS3/DynamoDBを作成
cd backend-resources
cp terraform.tfvars.example terraform.tfvars
# terraform.tfvars を編集(state_bucket_name を一意な名前に変更)
terraform init
terraform apply
cd ..
- backend.tf を自動生成
./setup-backends.sh
- tfvarsのサンプルをコピーしてシークレットを記入
rds/terraform.tfvars.example→rds/terraform.tfvarszerotrust/terraform.tfvars.example→zerotrust/terraform.tfvars
- RDS ルートを適用
cd rds
terraform init
terraform apply
- Zero Trust ルートを適用
cd zerotrust
terraform init
terraform apply
- ECS Cloudflared ルートを適用
cd ecs-cloudflared
cp terraform.tfvars.example terraform.tfvars
# terraform.tfvars を編集(tunnel_token を Cloudflare Dashboard から取得)
terraform init
terraform apply
- トークン/シークレットは
terraform.tfvarsに記入(Gitにはコミットしない)。 - S3 backendは各ルートの
backend.tfで設定(bucket/key/region等を直接記入)。 zerotrustはドメイン不要の Tunnel + プライベートネットワークルート(WARP)を作成。ecs-cloudflaredは RDS VPC内の Private Subnet にFargateタスクを配置し、cloudflaredを実行。tunnel_tokenは Cloudflare Dashboard → Zero Trust → Networks → Tunnels から取得。zerotrustはterraform_remote_stateで RDS の outputs を参照(S3 backend)。zerotrust/terraform.tfvarsでrds_state_bucket/rds_state_key/rds_state_regionを設定。db_passwordは RDS ルートで自動生成し、sensitive output として出力。- RDS の認証情報は Secrets Manager に保存し、
db_secret_arnとして出力(Amplify で利用可能)。 - RDS ストレージ暗号化と IAM DB 認証はデフォルトで有効。
db_engine_versionが未設定の場合、最新バージョンが自動選択される。