はじめに
「Terraformを使いたいが、HCLの書き方がわからない」
「AWSのリソースをコード化したいが、どこから始めればいいかわからない」
「インフラ構成が複雑になってきて管理しきれない」
Infrastructure as Code(IaC)はモダンなインフラ管理の標準ですが、TerraformのHCL文法・AWSのリソース定義・ステート管理など、習得すべき知識が多くあります。Claude Codeを使えば、インフラ要件を自然言語で説明するだけで適切なTerraformコードを自動生成できます。
目次
- IaCでのClaude Code活用の概要
- Terraformプロジェクトの初期設定
- AWSリソースの自動生成
- モジュール設計とリファクタリング
- セキュリティ設定の強化
- ステート管理とCI/CD統合
- インフラのコストの最適化
- まとめ
1. IaCでのClaude Code活用の概要
何ができるか
> 以下のインフラ構成をTerraformで構築してください。
構成概要:
- 本番用のWebアプリケーション環境
- AWSリージョン:ap-northeast-1(東京)
- 可用性:マルチAZ構成
コンポーネント:
- VPC・サブネット・セキュリティグループ
- ECS Fargate(アプリケーション)
- RDS PostgreSQL(マルチAZ)
- ElastiCache Redis
- ALB(Application Load Balancer)
- ACM(SSL証明書)
- Route 53(DNSレコード)
ディレクトリ構成の提案も含めてください。
2. Terraformプロジェクトの初期設定
プロジェクト構成の設計
> 複数環境(dev・staging・prod)に対応した
Terraformプロジェクト構成を設計してください。
要件:
- 環境ごとに異なる設定値(インスタンスサイズ等)
- 共通リソースのモジュール化
- ステートファイルのS3管理・DynamoDBロック
- tfvarsファイルによる環境別設定
推奨するディレクトリ構成を提案してから実装してください。
バックエンドの設定
> Terraformのリモートバックエンドを設定してください。
設定内容:
- S3バケット(ステートファイル保存)
- DynamoDBテーブル(ステートロック)
- S3バケットのバージョニング有効化
- 暗号化設定(KMS)
- IAMポリシーの設定
バックエンド用のリソース自体もTerraformで管理できるよう
bootstrapスクリプトも作成してください。
3. AWSリソースの自動生成
ネットワーク設計
> 本番環境用のVPC構成をTerraformで実装してください。
設計:
- CIDR:10.0.0.0/16
- パブリックサブネット:2つ(各AZ)
- プライベートサブネット:4つ(アプリ用・DB用 各AZ)
- NATゲートウェイ:各AZに1つ(高可用性)
- VPCフローログ:CloudWatch Logsに送信
セキュリティグループは用途別(ALB・アプリ・DB・Redis)に分けてください。
ECS Fargateの設定
> ECS Fargateを使ったコンテナデプロイ環境を構築してください。
設定:
- ECSクラスター
- タスク定義(CPU:0.5vCPU・メモリ:1GB)
- ECSサービス(最小2タスク・最大10タスク)
- Auto Scaling(CPU使用率70%でスケールアウト)
- ECRリポジトリ(イメージのライフサイクルポリシー付き)
- CloudWatch Logsへのログ送信
- Secrets ManagerからDB接続情報を取得
RDSの設定
> RDS PostgreSQLの本番環境設定をTerraformで実装してください。
設定:
- エンジン:PostgreSQL 15
- インスタンス:db.t3.medium
- マルチAZ:有効
- 自動バックアップ:7日間保持
- 暗号化:KMS使用
- Enhanced Monitoring:有効
- Performance Insights:有効
- パラメータグループのカスタマイズ
- セキュリティグループ:アプリサーバーからのみアクセス可
4. モジュール設計とリファクタリング
既存コードのモジュール化
> この大きなmain.tfをモジュールに分割してください。
分割基準:
- networking(VPC・サブネット・セキュリティグループ)
- compute(ECS・EC2)
- database(RDS・ElastiCache)
- storage(S3)
- monitoring(CloudWatch・アラーム)
各モジュールのvariables.tf・outputs.tf・README.mdも作成してください。
[main.tfを貼り付け]
再利用可能なモジュールの設計
> 複数のプロジェクトで再利用できる
ECS Fargateデプロイ用モジュールを設計してください。
入力変数:
- アプリケーション名・環境名
- Dockerイメージ・タグ
- CPUとメモリのサイズ
- 環境変数・シークレット
- スケーリング設定
出力値:
- サービスARN・タスク定義ARN・ECRリポジトリURL
5. セキュリティ設定の強化
セキュリティ診断
> このTerraformコードをセキュリティ観点で診断してください。
使用ツール:checkov または tfsec
チェック観点:
- S3バケットのパブリックアクセス設定
- セキュリティグループの過剰な許可(0.0.0.0/0)
- 暗号化されていないリソース
- ロギング・監査が無効なリソース
- IAMポリシーの最小権限原則違反
問題を修正したコードを提示してください。
AWS Configの設定
> AWSのセキュリティコンプライアンスを自動チェックする
AWS Config Rulesを設定してください。
有効にするルール:
- 暗号化されていないEBSボリューム検出
- パブリックなS3バケット検出
- MFAが無効なIAMユーザー検出
- 古いアクセスキーの検出
- セキュリティグループの過剰な許可検出
6. ステート管理とCI/CD統合
GitHub Actionsとの統合
> TerraformのCI/CDパイプラインをGitHub Actionsで構築してください。
ワークフロー:
- PRごと:terraform fmt・validate・plan を実行してPRコメントに結果を投稿
- mainマージ後:terraform applyを実行(手動承認付き)
- 環境ごとにワークスペースを切り替える
認証:OIDC(OpenID Connect)を使ったキーレス認証
ドリフト検出
> インフラのドリフト(実際の状態とTerraformの状態の乖離)を
定期的に検出する仕組みを構築してください。
設定:
- 毎日深夜にterraform planを実行
- ドリフトが検出された場合はSlack・メールに通知
- 差分の詳細をレポートとして保存
7. インフラのコスト最適化
コスト分析
> このTerraformコードのAWSリソースのコストを試算してください。
試算条件:
- リージョン:ap-northeast-1
- 月間トラフィック:1TB
- 平均CPU使用率:30%
Infracostを使ってコスト見積もりを出力してください。
コスト削減できる箇所があれば提案してください。
8. まとめ
Claude CodeでのTerraform・IaC活用のポイント:
- インフラ要件を自然言語で説明するだけでHCLを自動生成
- セキュリティ診断(checkov・tfsec)を自動実行して問題を修正
- マルチ環境・モジュール設計を最初から正しく設計できる
- GitHub ActionsとのCI/CD統合を自動構築できる
IaC導入の推奨順序:
- 開発環境のVPC・ECS環境から始める
- ステート管理をS3+DynamoDBに移行
- モジュール化してコードを整理
- CI/CDパイプラインを構築
- 本番環境に展開
次回の第33回:Webスクレイピングをする方法では、PlaywrightとBeautifulSoupを使った自動収集の方法を解説します。
よくある質問(FAQ)
Q. AWSの認証情報をTerraformに安全に渡すには?
A. Claude Codeに「AWSの認証情報を安全に管理する方法を教えてください」と相談することで、IAM Role・OIDC・AWS Vaultなど状況に応じた方法を提案してくれます。アクセスキーのハードコードは避けてください。
Q. GCPやAzureにも対応していますか?
A. はい。「GCPのCloud RunとCloud SQLをTerraformで構築してください」のように指定することで対応できます。
この記事はClaude Code入門シリーズ(第4部)の第32回です。← 第31回:TypeScript型設計 | 第33回:Webスクレイピング →
ご質問はお問い合わせページからお気軽にどうぞ。