コンテンツにスキップ
Dev Classmethod Jp Articles Claude Code Terraform Cloudwatch Alarm Dashboard

Claude CodeとTerraformでCloudWatchの導入を省力化しよう

  • URL: https://dev.classmethod.jp/articles/claude-code-terraform-cloudwatch-alarm-dashboard
  • 日付: 2026-06-24
  • Tier: Tier 2
  • 要旨: CloudWatch の監視(Alarm・カスタムダッシュボード)構築を省力化する方法は、.tf ファイルに型と validation ブロックで構造とルールを先に固めておき、terraform.tfvars の値生成を Claude Code に任せるやり方。型が決まっていれば Claude Code の出力はブレが小さく冪等性を担保しながら工数削減できる。tfvars は Alarm 用とダッシュボード用の 2 つのルートモジュール間で流用可能。

詳細

Terraform と Claude Code の併用時、AI に触らせる範囲を限定することが肝要。.tf ファイルでは resource_name の重複排除や instance_id の形式検証(i- で始まる有効な EC2 インスタンス ID)、comparison 演算子(>、>=、<、<= のいずれか)といった validation ブロックでガードレールを張っておくことで、terraform plan 前に生成 AI のミスを弾ける。EC2 インスタンスの monitoring 例では、CPU・NetworkIn・NetworkOut のメトリクスごとに Warning と Critical の 2 種類アラート重要度を設定し、それぞれに evaluation_periods・comparison・threshold・datapoints_to_alarm を持たせる構造。main.tf は var.ec2_instances をループして(インスタンス × メトリクス × Warning/Critical)の組み合わせを aws_cloudwatch_metric_alarm に展開。ダッシュボード側の locals.tf はこれを aws_cloudwatch_dashboard の JSON ウィジェット配列に組み立てる。Alarm と dashboard の tfvars スキーマが同じなので、Alarm 作成後に cp cloudwatch-alarm-setup/_template/terraform.tfvars cloudwatch-dashboard-setup/_template/terraform.tfvars で流用可能。dashboard 側の type = any で受けるだけのシンプル形式にできるのは Alarm 側で型チェック済みだからこそ。メリットとして、型の作成と検証を人間が担当しつつ、値の作成だけ AI に任せることで、省力化と安心感を両立。生成 AI の出力がもっともらしく表記ゆれを含んでも処理が止まらず、スクリプトなら仕様変更やランタイム更新の影響を考慮する必要もない。terraform plan で中身確認後、想定外のリソース作成事象は発生していない実績あり。