電通総研 テックブログ

電通総研が運営する技術ブログ

AWS Well-Architected のオートメーション(自動化)に触れてみる

XI本部 クラウドイノベーションセンター所属、2年目の米田です。
皆さんは、普段どのように自分たちのクラウドインフラ設計を評価されてますでしょうか。AWS では Well-Architected Framework に基づき、設計の健全性やベストプラクティスへの準拠状況を体系的にチェックすることが推奨されています。
そんな中で、Infrastructure as Code(IaC)を対象に自動解析を行える Well-Architected IaC Analyzer(以下 IaC Analyzer) というツールがあり、Well-Architectedフレームワークに基づいたインフラストラクチャの評価をより効率化できたので、共有したいと思います。
具体的に本記事では、IaC Analyzer を使った IaC テンプレートの解析やレビューのポイントを整理しつつ、その特徴や実践的な活用方法をわかりやすく紹介します。
これから IaCやクラウドのレビューに携わる方にとって、参考になる内容になれば幸いです。

そもそも AWS の Well‑Architected とは?

クラウド設計を語るとき、「ただ動く」だけのインフラではなく、安全性・信頼性・効率性・コスト・持続可能性など、さまざまな観点をバランスよく満たす構造を目指す必要があります。AWS が提唱する Well‑Architected フレームワーク(Well‑Architected Framework) は、そのためのガイドラインとチェックリストを提供する枠組みです。
公式ドキュメントによれば、Well‑Architected Framework は「AWS でシステムを構築する際に行う設計判断の長所と短所を理解する」ためのもの。これを駆使することで、安全で信頼性が高く、かつコスト効率にも優れたクラウド設計を実現できるようになる、とあります。

The AWS Well-Architected Framework helps you understand the pros and cons of decisions you make while building systems on AWS. By using the Framework you will learn architectural best practices for designing and operating reliable, secure, efficient, cost-effective, and sustainable systems in the cloud.
AWS公式ドキュメントより引用)

Well‑Architected は、6つの「柱(Pillars)」を基本構成要素として定義しています。これらは設計・運用を評価するための主要な観点であり、それぞれに対応するベストプラクティスがあります。

  • 運用上の優秀性(Operational Excellence)
    日常の運用、モニタリング、変更管理、継続的改善などを通じて、効率よく運用を最適化する。

  • セキュリティ(Security)
    アイデンティティ管理、データ保護、アクセス制御、監査などでリスクを低減する。

  • 信頼性(Reliability)
    障害対策、フェイルオーバー、自動復旧などで、高可用性を確保する。

  • パフォーマンス効率(Performance Efficiency)
    リソース選定やアーキテクチャ設計を通じて、性能を最適化する。

  • コスト最適化(Cost Optimization)
    必要なコストを抑えつつ、無駄のない構成を実現する。

  • 持続可能性(Sustainability)
    環境負荷を考慮した設計を行い、長期的な運用を支える。

この6つの柱を基にしてアーキテクチャを評価します。

アーキテクチャ評価ツール

AWS Well-Architected Framework を活用するうえで中心的な存在となるのが、AWS マネジメントコンソールから利用できる Well-Architected Toolです。このツールを使うことで、フレームワークの各柱(Pillar)やレンズ(Lens)に基づいた設問に回答し、ワークロードの健全性を体系的に把握できます。

利用手順は非常に単純で、AWSコンソールから「AWS Well-Architected Tool」を開いたら、まずはワークロード(評価対象となるシステムやアプリケーション)を定義します。そして、特定のユースケース向けに拡張された専門的なチェック項目のセット(レンズ)を選択します。このレンズはAWS公式が用意しているコンテンツもありますが、独自のカスタムレンズを作成することも可能です。当然ですが AWS Well-Architected Framework レンズはAWS公式から用意されているのでそのまま選択していただけます。最後に各柱(Pillar) ごとに複数の質問が提示されるので、「はい / いいえ / 該当なし」などで回答します。

回答結果から、AWS が定義する High(Medium)-Risk Issue(高(中)リスク項目) が自動的に抽出されますので、その結果によりセキュリティ・運用・信頼性・コストなどの観点で、どこに課題が潜んでいるのかを可視化できます。そして必要に応じて課題に対する対策を協議する、というところまでが一般的な流れかと思います。

このWell-Architected Toolの利用により、セキュリティや可用性など、忘れがちな重要ポイントを漏らさずレビューすることができます。なによりも無料です!
ただし、一度実施したことのある方はご存じかもしれませんが、このWell-Architected Toolを使用した評価は多少時間がかかる作業であり、質問に回答するために複数の設計書やアーキテクチャ図、IaC(CloudFormation/Terraform など ) の記述コードを往復して確認しなければなりません。また質問数も多く、プロジェクト規模によっては 1 回のレビューに数時間かかることもあるかなと思います。

まさにここが、本記事で紹介する Well-Architected IaC Analyzer が補完するポイントです。

アーキテクチャ評価の自動化

Well-Architected Tool が「設計レビューの枠組み」を提供する一方で、その評価にはどうしても人手による確認作業が多く、工数が膨らみがちです。そこで今回は、AWS が公開したオープンソースの Well-Architected IaC Analyzer を利用してみます。具体的には、CloudFormation や Terraform などの Infrastructure as Code(IaC)を自動解析し、Well-Architected の観点でレビュー結果を生成してくれる ソリューションです。

IaC Analyzer の概要

IaC Analyzer は、IaC テンプレートやアーキテクチャ図、PDF などをアップロードすると、それらの内容を AI(厳密には、Amazon Bedrock の LLM)で解析し、Well-Architected Framework に沿った改善点やリスクを自動抽出してくれます。レビュー対象には以下が含まれます。

  • IaCコードファイル(CloudFormation、Terraform、AWS CDK など)
  • PDFファイル(システム説明資料、システムアーキテクチャ図など)

上記に加えて、サポートドキュメント機能もあり、プロジェクトに関連する技術仕様書やAPIドキュメントなどを.pdf .txt .png .jpg .jpeg形式でアップロードすることで、さらにレビュー精度を上げることができるようです。こちらについては後ほど少し詳しく検証してみたいと思います。

以下が実際のアプリケーション画面になります。操作方法も個人的には直感的で分かりやすい UI になっていると思います。

セットアップ

実際にセットアップするにあたって、CDKを利用する方法もあるようですが、今回は最も簡単にCloudFormationより直接スタックを作成する方法で検証してみました。GitHubリポジトリ(参考)よりCloudFormationのテンプレートファイルをyaml形式でダウンロードすることができますので、CloudFormationコンソールよりテンプレートをアップロードし、簡単にスタックを作成できます。スタック作成後は、ECSをはじめとした複数のAWSリソースが作成されますので、確認してみてください。アプリケーション自体はOSSですが、CloudFormationでいくつかのAWSリソースが立ち上がるのでその分のコストは発生する点に注意です。

私の立ち上げた環境は以下のとおりです。

  • 作成先リージョンは北米リージョン(東京リージョンだとスタック作成に失敗した、、、)
  • 一時的に利用する想定なので認証設定はなし
    作成が成功すると2つのスタックが作成されておりました。

スタック作成後は、コンソールのoutputよりフロントのURLが取得できます。そちらにアクセスすることでアプリケーションを立ち上げることができます。

使ってみる

実際にIaC Analyzerを使用してIaCコードからWell-Architectedフレームワークに基づいて、クラウド設計の評価を実施してみます。
最初に対象となるファイルをアップロードします。ファイルのアップロードにはサイズ制限があり、感覚ですが大体5~10MBほどのファイルをアップロードすると、レビュー時間が長くなったり、そもそもファイルアップロードができなかったりするので注意が必要です。とはいえ、Zip形式でのファイルアップロードもサポートされているので、サイズの大きなIaC ファイルをアップロードする際には圧縮してサイズを小さくすることで対応できます。(ちなみにpdfファイルの場合は最大5ファイルの、各ファイルサイズ上限が4.5MBと明記されてました)
今回は検証用として以下のようなよく見る?アーキテクチャ構成をIaC Analyzerにかけてみました。
※ここでは実際のものより少し簡略化したアーキテクチャ構成図を掲載しています。

以下は今回の検証用に設定したIaC Analyzerのパラメータ設定です。

  • 柱:Security
  • レンズ:AWS Well-Architected Framework
  • 出力言語:日本語
  • サポートドキュメント:なし
  • ワークロード:事前に用意したワークロードを設定(空白のままにしておけば新規に自動作成)

全ての設定ができたのでいざ実行、ところがいきなりエラーが発生。調べたところ原因はどうやらAmazon Bedrockを利用するにあたってのユースケースの詳細を申請していないことにありました。冒頭でもお伝えしましたが、このIaC Analyzerは裏でAmazon BedrockのClaudeが動いており、初回利用時にはユースケースの詳細をAWSやAnthropicに共有する必要があるそうです。
申請手順は簡単でBedrockのコンソールより送信フォームへ遷移できるので、フォームに必要な項目を入力して送信します(参考資料を参照)。

それでは申請しなおして改めてレビューを実行。今度はうまく評価され、分析結果とAIによるレポートが正常に表示されました。レポート内容は想像していた以上に詳細に記載されており、かなり参考になります。一方でレビューにはかなり時間がかかる模様、、、大体50KBのファイルの6つの柱の評価に20~30分ほど要しました。

結果はレポートとしてダウンロードすることも可能ですし、Well-Architected Tool タブよりWell-Architected Toolに直接書き込むことも可能なようです。画面からは現在の回答数やRisk数も確認できました(今回はセキュリティに絞ったのでその項目だけ回答が完了していることがわかります)。個人的にはこれが一番便利な機能だと思っており、これまで手動で行っていた評価作業が自動評価&自動入力されるため、質問項目と自身のIaCコード/設計書を往復して時間をかけて入力するという作業がかなり低減されました。

ただし、あくまでも AI による自動評価であるため、最終的な確認や判断は人間が行う必要があります。実際に出力された分析結果を見ると、High / Medium Riskと判定された数が想像以上に多く見られました。その理由の多くは、IaC だけでは判断できない背景情報が考慮されていないことにあります。
例えば、Security Hub の有効化Inspector・AWS Config の設定 などは IaCコード には含まれていないため、「実装していない」と判定されてしまうことがあるようです。こうした IaCコードからは読み取れない項目については、別途人の手で補完・修正する必要があります。

とはいえ、分析結果には「なぜ不適切と判断されたのか」の理由まで明示されているため、指摘内容を参考に修正作業を進めることで、従来よりもはるかに効率的にレビューを行うことができます。なにより、コードから自動で読み取れる項目は IaC Analyzer が入力してくれるので、レビューにかける工数は大幅に削減できます。

最後にせっかくなので、サポートドキュメントがあるとどの程度精度が変わるのか検証してみました。方法としては先ほどのパラメータ設定に加えて、サポートドキュメントにアーキテクチャ構成図を貼り付けて再評価するというものです。
結果としては、Riskと判断された数が減少してました。先ほどのサポートドキュメントなしだったときと比較して、もう少しだけ実態にあった評価がなされたのかなと思います。

例えば、先ほどベストプラクティスに適さないと指摘された項目も、今度は適していると判断されたようです。

とはいえまだRisk数としては多いように見えますし、アーキテクチャ図にあってもIaCコードにないから不適切と判断された項目もありました。やはりまだ人の手で最終確認する必要はありそうですね。

当然ですが、IaCコードに情報が含まれていればいるほど良い精度で評価してくれるようなので、関連するコードは全てIaC Analyzerに渡してあげた方がよさげです。クラウド設計に関連しそうな情報は全てZipにまとめてしまいましょう!

まとめ

今回はWell-Architectedフレームワークの基本的な考え方と、評価を自動化するための簡単なツール(IaC Analyzer)について紹介しました。
これまで長時間かけて手作業で実施していたWell-Architected Toolを用いたクラウドアーキテクチャ設計の評価が、IaC Analyzerの導入により効率的に評価できるようになりました。これからの本作業の負担が大きく軽減されることが期待できます。本記事ではSecurityを軸に紹介させていただきましたが、今後機会があれば他の柱での評価結果なども共有できればと思います。
ただ本記事でも触れましたが、自動的に評価してくれるとはいえ時間がかかってしまうのが少し懸念であり、レビューが完了したら通知されるような機能があればより使いやすいのかなと感じました。。。
またネットワークが不安定な環境では、レビュー結果の取得に失敗する可能性があるため、安定した環境設備も重要ですね。
ともあれ、ぜひ近年大きく進歩したAIの力に触れてみてください。

参考

https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/framework/welcome.html
https://github.com/aws-samples/well-architected-iac-analyzer
https://repost.aws/ja/knowledge-center/bedrock-access-anthropic-model

執筆:@yoneda.kosuke
レビュー:@miyazaki.hirotoshi
Shodoで執筆されました