Well-Architected IaC Analyzerで
インフラコードを分析してみた

はじめに

こんにちは!クラウド活用推進担当の安田です。

最近、AWSのWell-Architected IaC Analyzerというツールを使ってみました。

今回は、実際に使ってみて分かった「IaC Analyzerの特徴と使用感」を、具体的な検証結果とともにお伝えします。

目次

  1. IaC Analyzerとは
  2. 導入・セットアップ手順
  3. 検証環境の準備
  4. 実際に使ってみて分かったこと
  5. 実際に受けた指摘内容
  6. コストについて
  7. まとめ
  8. 参考

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ベストプラクティスにどの程度沿っているか、逸脱しているかを可視化し、クラウドアーキテクチャ改善の提案を行います。

wa_genai_app_diagram.png

導入・セットアップ手順

前提条件

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を使用してデプロイできます。デプロイが完了してアクセスすると、以下のようなページとなります。

スクリーンショット 2025-11-10 114128.png

検証環境の準備

検証に使用したCloudFormationテンプレート

今回の検証では、最小限の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

EC2インスタンス設定

項目 設定値
AMI ID ami-0d52744d6551d851e(Amazon Linux 2023 - 東京リージョン)
インスタンスタイプ t2.micro(vCPU: 1 / メモリ: 1 GiB / 無料利用枠対象)
パブリックIP 自動割り当て有効
接続方法 EC2 Instance Connect経由での接続のみ

実際に使ってみて分かったこと

IaC Analyzerを実際に使用して、良い点と注意点の両方が分かりました。

良かった点

1. 詳細で具体的な指摘内容

単に「問題がある」と指摘するだけでなく、なぜ問題なのか、どう改善すべきかまで詳しく教えてくれます。

例えば、今回の検証では「SSH接続が0.0.0.0/0から許可されている」という指摘に加えて、改善策を具体的なコード例付きで提案してくれました。

2. チャット機能で深掘りできる

分析結果に対して、チャット機能でさらに詳しく質問できるます。

「この問題を解決するための具体的な手順は?」といった追加質問に対して、AIが回答してくれます。

以下の画像のように、チャット画面から改善点について日本語で質問することができます。

スクリーンショット 2025-11-10 114552.png

3. 複数のIaC形式に対応

CloudFormation、Terraform、AWS CDKなど、主要なIaC形式に対応しているため、チームで使用しているツールに関係なく活用できます。


注意点・制約事項

1. 全ての柱を一度に分析すると504エラーが発生

問題:Well-Architected Frameworkの全ての柱(運用上の優秀性、セキュリティ、信頼性、パフォーマンス効率、コスト最適化、持続可能性)について一度に分析させると、途中で504エラーとなってしまい中断されました。

解決策:柱を一つずつ指定して実行すると正常に動作します。少し手間はかかりますが、各柱を個別に分析することで確実に結果を得られます。

2. 分析には時間がかかる

実測値:コスト最適化の柱の分析で、約7分程度かかりました。

これは生成AIがコードを詳細に解析し、ベストプラクティスとの照合を行うためです。複雑な構成や大規模なテンプレートの場合、さらに時間がかかる可能性があります。

ただし、この時間をかけることで、手動では見落としがちな問題点を発見できるため、時間対効果は高いと感じました。

3. 日本語出力の文字化け問題

問題:IaC Analyzerでは出力言語を選択でき、日本語にすることができます。操作ページ上では日本語で問題なく表示されますが、CSVで出力すると文字化けが発生します。

解決策:出力言語を英語に設定すると問題なく動作します。CSV出力が必要な場合は、英語での出力をお勧めします。

実際に受けた指摘内容

今回の検証で、IaC Analyzerから具体的にどのような指摘を受けたのかを紹介します。セキュリティの柱についてチェックをしました。

テンプレートから検出された問題点

スクリーンショット 2025-11-10 114421.png

チャットで受けた詳細な分析

IaC Analyzerのチャット機能を使って、さらに詳しい分析を依頼したところ、以下の問題点が指摘されました。


IaC Analyzerからの指摘内容

現在の問題点

1. SSH接続が全世界(0.0.0.0/0)から許可されています

2. 多要素認証(MFA)が実装されていません

3. セッション管理が不十分です

4. Systems Managerなどの安全なアクセス管理ツールが使用されていません


推奨される改善策

IaC Analyzerから提案された具体的な改善策を紹介します。

1. SSHアクセスの制限と改善

推奨:Systems Manager Session Managerの使用

    # Systems Manager Session Managerを使用するための設定
    EC2InstanceRole:
      Type: AWS::IAM::Role
      Properties:
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service: ec2.amazonaws.com
              Action: sts:AssumeRole
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    # セキュリティグループの修正(SSHポートを閉じる)
    SecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Minimal security group
        VpcId: !Ref VPC
        # SSHのインバウンドルールを削除

2. 監視とログ記録の追加

    # CloudWatch Logsの設定
    LogGroup:
      Type: AWS::Logs::LogGroup
      Properties:
        RetentionInDays: 30

    # VPCフローログの有効化
    VPCFlowLog:
      Type: AWS::EC2::FlowLog
      Properties:
        ResourceType: VPC
        ResourceId: !Ref VPC
        TrafficType: ALL
        LogDestinationType: cloud-watch-logs
        LogGroupName: !Ref LogGroup

3. 暗号化の実装

    # EBSボリュームの暗号化
    EC2Instance:
      Properties:
        BlockDeviceMappings:
          - DeviceName: /dev/xvda
            Ebs:
              Encrypted: true
              VolumeSize: 8

実装手順

推奨される実装ステップ

  1. Systems Manager Session Managerの設定
    ・IAMロールを作成し、EC2インスタンスに適用
    ・SSHポートを閉じる
    ・Systems Manager Session Managerを使用して接続
  2. セキュリティ監視の実装
    ・CloudWatchアラームの設定
    ・VPCフローログの有効化
    ・CloudTrailの有効化
  3. 暗号化の設定
    ・EBSボリュームの暗号化を有効化
    ・KMSキーの設定

セキュリティ上のメリット

・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コードの分析: 手動レビューが困難な規模のコード


向いていない場面

日常的な開発作業: コストが高く、分析時間もかかる
小規模な変更の確認: オーバースペックになる可能性


最後に

IaC Analyzerは、AWSのベストプラクティスに準拠したインフラ構築を支援する強力なツールです。

特に、生成AIを活用した分析機能により、時間のかかるチェック作業を効率化できる点が大きなメリットです。今回の検証では、単純なEC2構成で複数のセキュリティ上の問題点と、具体的な改善コードまで提示してくれました。

ただし、運用コスト(月額約600ドル+AI使用料)や分析時間(1柱あたり約7分)を考慮すると、継続的な利用というよりは、重要なタイミング(本番リリース前、定期レビュー時など)での活用が適していると感じました。

ここまで読んでいただきありがとうございました!

参考

Well-Architected IaC Analyzer - GitHub

AWS Well-Architected Framework

Amazon Bedrock

クラウド基盤ソリューション