Well-Architected IaC Analyzerで
インフラコードを分析してみた
インフラコードを分析してみた
こんにちは!クラウド活用推進担当の安田です。
最近、AWSのWell-Architected IaC Analyzerというツールを使ってみました。
今回は、実際に使ってみて分かった「IaC Analyzerの特徴と使用感」を、具体的な検証結果とともにお伝えします。
Well-Architected IaC Analyzer(以下、IaC Analyzer)は、AWSのWell-Architected Frameworkのベストプラクティスに対するインフラコードの準拠度を、自動で評価してくれるオープンソースのツールです。
生成AI(大規模言語モデル)を活用し、構成図の画像ファイルや、以下のようなInfrastructure as Code (IaC)を解析します。
・CloudFormationテンプレート
・Terraformコード
・AWS CDKコード
Amazon Bedrock上のLLM(Anthropic Claudeなど)にWell-Architectedの知識を与え、インフラコードやアーキテクチャ図を評価させる仕組みで、ベストプラクティス遵守度のチェックを自動化します。
AWSベストプラクティスにどの程度沿っているか、逸脱しているかを可視化し、クラウドアーキテクチャ改善の提案を行います。

IaC Analyzerを使用する前に、以下の準備が必要です。
・AWSアカウント
・Amazon Bedrockの有効化
・Claude 3.5 Sonnet v2へのアクセス権限
クロスリージョン推論の制限について
今回はGitHubのテンプレートを使用して構築しており、Claude 3.5 Sonnet v2を利用しています。
このモデルはクロスリージョン推論に対応しているため、組織のSCPなどでBedrockのリージョンに制限がかかっていると、うまく動作しない可能性があります。
Bedrockへのアクセスが複数リージョンで許可されているか、事前に確認してください。
詳細な導入手順については、以下のGitHubリポジトリを参照してください:
Well-Architected IaC Analyzer - GitHub
GitHubのREADMEに記載されている手順に従って、CloudFormationまたはCDKを使用してデプロイできます。デプロイが完了してアクセスすると、以下のようなページとなります。

今回の検証では、最小限のEC2インスタンスをVPCと共に構築するCloudFormationテンプレートを使用しました。
EC2を1台作成し、VPCも一緒に作成する構成です。キーペアなしで、Instance Connectのみで接続できる設定にしました。IaC Analyzerに指摘されるか確認するため、SSH接続を全IPアドレスから許可するようにしました。
| 項目 | 設定値 |
|---|---|
| VPC CIDRブロック | 10.0.0.0/16(利用可能IPアドレス数: 65,536個) |
| サブネット CIDRブロック | 10.0.1.0/24(利用可能IPアドレス数: 256個) |
| インターネットゲートウェイ | VPCとインターネット間の通信を可能にする |
| ルートテーブル | デフォルトルート: 0.0.0.0/0 → インターネットゲートウェイ |
| 項目 | 設定値 |
|---|---|
| セキュリティグループ | Allow SSH |
| インバウンドルール | プロトコル: TCP / ポート: 22(SSH) / 送信元: 0.0.0.0/0 |
| 項目 | 設定値 |
|---|---|
| AMI ID | ami-0d52744d6551d851e(Amazon Linux 2023 - 東京リージョン) |
| インスタンスタイプ | t2.micro(vCPU: 1 / メモリ: 1 GiB / 無料利用枠対象) |
| パブリックIP | 自動割り当て有効 |
| 接続方法 | EC2 Instance Connect経由での接続のみ |
IaC Analyzerを実際に使用して、良い点と注意点の両方が分かりました。
単に「問題がある」と指摘するだけでなく、なぜ問題なのか、どう改善すべきかまで詳しく教えてくれます。
例えば、今回の検証では「SSH接続が0.0.0.0/0から許可されている」という指摘に加えて、改善策を具体的なコード例付きで提案してくれました。
分析結果に対して、チャット機能でさらに詳しく質問できるます。
「この問題を解決するための具体的な手順は?」といった追加質問に対して、AIが回答してくれます。
以下の画像のように、チャット画面から改善点について日本語で質問することができます。

CloudFormation、Terraform、AWS CDKなど、主要なIaC形式に対応しているため、チームで使用しているツールに関係なく活用できます。
問題:Well-Architected Frameworkの全ての柱(運用上の優秀性、セキュリティ、信頼性、パフォーマンス効率、コスト最適化、持続可能性)について一度に分析させると、途中で504エラーとなってしまい中断されました。
解決策:柱を一つずつ指定して実行すると正常に動作します。少し手間はかかりますが、各柱を個別に分析することで確実に結果を得られます。
実測値:コスト最適化の柱の分析で、約7分程度かかりました。
これは生成AIがコードを詳細に解析し、ベストプラクティスとの照合を行うためです。複雑な構成や大規模なテンプレートの場合、さらに時間がかかる可能性があります。
ただし、この時間をかけることで、手動では見落としがちな問題点を発見できるため、時間対効果は高いと感じました。
問題:IaC Analyzerでは出力言語を選択でき、日本語にすることができます。操作ページ上では日本語で問題なく表示されますが、CSVで出力すると文字化けが発生します。
解決策:出力言語を英語に設定すると問題なく動作します。CSV出力が必要な場合は、英語での出力をお勧めします。
今回の検証で、IaC Analyzerから具体的にどのような指摘を受けたのかを紹介します。セキュリティの柱についてチェックをしました。

IaC Analyzerのチャット機能を使って、さらに詳しい分析を依頼したところ、以下の問題点が指摘されました。
1. SSH接続が全世界(0.0.0.0/0)から許可されています
2. 多要素認証(MFA)が実装されていません
3. セッション管理が不十分です
4. Systems Managerなどの安全なアクセス管理ツールが使用されていません
IaC Analyzerから提案された具体的な改善策を紹介します。
推奨:Systems Manager Session Managerの使用
推奨される実装ステップ
・SSHポートを閉じることによる攻撃対象面の削減
・すべての管理操作のログ記録
・暗号化によるデータ保護
・異常検知と自動アラート
・コンプライアンス要件への対応
・これらの変更は、開発環境でテストしてから本番環境に適用してください
・既存のシステムに影響を与える可能性があるため、計画的に実施してください
・運用チームへのトレーニングが必要です
IaC Analyzerをデプロイすると、1日当たり約20ドルのコストがかかります。
| 項目 | 日額 | 月額(概算) | 備考 |
|---|---|---|---|
| OpenSearch | 約15ドル | 約450ドル | 固定コスト(全体の75%) |
| その他AWSサービス | 約5ドル | 約150ドル | 固定コスト |
| Claude 3.5 Sonnet v2 | 変動 | 変動 | トークン数に応じた従量課金 |
| 合計 | 約20ドル | 約600ドル+ | AI使用料は別途 |
OpenSearchが全体コストの大部分(約75%)を占めています。
これにClaude 3.5 Sonnet v2の料金が使ったトークン分だけ加算されるので、結構コストはかかります。
検証目的で使用する場合は、使用後に環境を削除することをお勧めします。
IaC Analyzerは以下の場面で使うのが良いと感じました。
IaC Analyzerは、AWSのベストプラクティスに準拠したインフラ構築を支援する強力なツールです。
特に、生成AIを活用した分析機能により、時間のかかるチェック作業を効率化できる点が大きなメリットです。今回の検証では、単純なEC2構成で複数のセキュリティ上の問題点と、具体的な改善コードまで提示してくれました。
ただし、運用コスト(月額約600ドル+AI使用料)や分析時間(1柱あたり約7分)を考慮すると、継続的な利用というよりは、重要なタイミング(本番リリース前、定期レビュー時など)での活用が適していると感じました。
ここまで読んでいただきありがとうございました!
Well-Architected IaC Analyzer - GitHub