AWS Well-Architected Review (WAFR) Acceleration with Generative AI (GenAI) でWell-Archiレビューを加速する

最近スマートフォンの機種変更を行い、Google Pixel 9 Proに替えました。カメラの性能には非常に満足しています。

皆さんは、AWSでWell-Architectedなワークロードを構築していますか。本ブログでは、GitHubのaws-samplesで公開されている 「AWS Well-Architected Review (WAFR) Acceleration with Generative AI (GenAI)」 を実際にデプロイして使用してみた所感と、そのアーキテクチャについて共有します。

github.com

AWS Well-Architected Review (WAFR) Acceleration with Generative AI (GenAI) とは

AWS WAFR Acceleration with GenAIの実際の画面

AWS Well-Architected Review (WAFR) Acceleration with Generative AI (GenAI) は、AWS Well-Architectedフレームワークのレビュープロセスを容易かつ迅速にするために設計された包括的なサンプルアプリケーションです。簡単に言えば、ドキュメントをアップロードするだけで、Well-Architectedレビューの初回評価を数十分で完了させることができます。

AWS WAFR Acceleration with GenAI の主要な機能

AWS WAFR Acceleration with GenAIの主要な機能を紹介します。

ユーザー認証(ログイン)機能(Amazon Cognito)

AWS WAFR Acceleration with GenAIのログイン画面

フロントエンドはEC2上で稼働するStreamlitで構築されており、認証機能にはAmazon Cognitoが使用されています。権限を持つユーザーのみがアクセスできるため、実際の業務にも活用しやすい構成です。

Well-Architected Framework 分析とレビュー

この機能が中核となります。アップロードされた設計ドキュメントを生成AIがコンテキストとして使用することで、Well-Architected Frameworkのレビューを生成AIが実施し、その結果をAWS Well-Architected Toolに自動的に反映します。

まず、分析方法を選択します。QuickまたはDeep with Well-Architected Toolを選択でき、Deepを選択した場合はレビュー結果がWell-Architected Toolに自動的に反映されます。

Workload Analysis

次に、Well-Architected Toolの詳細情報を入力します。ここでは、ワークロードプロパティとして、レビューの所有者・業界・環境・適用するレンズを設定できます。

Additional Details

続いて、Well-Architected Frameworkのうちレビューする柱を選択します。

Select Pillars

最後に、設計の成果物をアップロードします。アップロードしたPDFはAmazon Textractによってデータが抽出され、生成AIがレビューを行う際のコンテキストとして使用されます。

Document Upload & Create WAFR Analysis button

「Create WAFR Analysis」ボタンを押すと、分析とWAFRレビューが開始されます。進捗状況は「Existing WAFR Reviews」画面で確認できます。

WAFR Analysis Runs on Existing WAFR Reviews

Well-Architected Framework 分析とレビューの詳細結果の確認

分析とレビューの進捗が「Complete」になった後に、詳細な結果を確認できます。以下の画面のように、分析結果のサマリー、Solutionのサマリー、各柱ごとの分析結果が生成AIによって出力されます。

Analysis Details

また、生成AIとのチャット機能が設けられており、分析結果のサマリー・Solutionのサマリー・アップロードした設計成果物・各柱をディスカッションの対象として生成AIと会話できます。以下の画面は、セキュリティの柱について生成AIと会話している様子です。基本的には英語のUIですが、日本語で質問すれば生成AIは日本語で回答してくれます。

WAFR Chat

Well-Architected Toolへの反映結果の確認

分析方法にDeepを選択した場合は、Well-Architected Toolに反映されます。以下の画像のように、初回レビュー結果のワークロード作成まで自動で完了していました。

Well-Architected Toolの結果

このように、設計成果物をアップロードするだけで、初回のWell-Architected Frameworkレビューを数十分で完了させることができます。まさにWell-Architected Frameworkレビューを加速させるツールとして、非常に魅力的な機能を備えていることがわかります。

AWS WAFR Acceleration with GenAIの主要なアーキテクチャ

AWS WAFR Acceleration with GenAIのアーキテクチャについてご紹介します。

Amazon Bedrock Knowledge BaseによるRAGを活用した分析

AWS WAFR Acceleration with GenAIは、アプリケーションのデプロイ時に所定のディレクトリへWell-Architected Frameworkの概要や各柱のドキュメントを配置することで、Amazon Bedrock Knowledge Baseの情報源ファイルとして活用できるようプロビジョニングされます。ベクトルデータベースにはAmazon OpenSearch Serverlessが指定されており、埋め込みモデルにはTitan Text Embeddings v2が使用されています。

Knowledge Bases for Amazon Bedrock

実際に、ソースコードの generate_prompts_for_all_the_selected_pillars.py ファイルでは、 <kb> タグで囲まれた箇所でナレッジベースが情報源として使用されています。 <kb> で囲まれた情報源は、bedrock_agent_client.retrieve のSDK呼び出しによってナレッジベースから各柱の推奨情報を取得していることがわかります。

generate_prompts_for_all_the_selected_pillars.py の <kb>タグ

retrieve関数によるAmazon Bedrock Knowledge Baseからの推奨事項取得

AWS Step Functionsによる分析ワークフロー

設計成果物のデータ抽出からWell-Architected Toolへの反映までは、一連のワークフローとしてAWS Step Functionsのステートマシンでプロビジョニングされています。ステートマシンの定義を可視化すると、以下のようになります。

AWS Step Functions 分析ワークフローのステートマシン

このステートマシンを見ると一目瞭然ですが、「Extract document text」ではAmazon Textractを使用してアップロードした設計成果物からデータを抽出します。その後、生成AIでサマリー情報を生成し、Well-Architected Frameworkの各柱ごとにループしてWell-Architected Toolを更新していることがわかります。

生成AIによる分析精度を高めるシステムプロンプトの活用

何度かこのツールを試したところ、設計成果物にベストプラクティスを明確に満たしている旨を記載すると、Well-Architected Toolにも正確にベストプラクティスが反映されることがわかりました。具体的には、以下のようにベストプラクティスがマークされたPDFファイルを設計成果物としてアップロードすることで、正しく反映されることを確認できました。

ベストプラクティスをマークしているPDFファイルの例

生成AIに依存するこのツールがなぜ正確な回答を出力できるのか疑問に思い調査したところ、その鍵はシステムプロンプトにありました。システムプロンプトには、各ベストプラクティスの粒度まで深掘りしてレビューするよう指示が記載されています。

システムプロンプトがそれぞれのベストプラクティスの粒度まで深堀している

評価粒度の鍵はナレッジベースの活用と文脈統合にあります。Amazon Bedrockナレッジベースから取得した詳細なWell-Architectedドキュメント情報を活用することで、生成AIはベストプラクティスのレベルまで詳細に評価できます。さらに、アップロードされた文書の詳細分析と組み合わせることで、粒度の高いWell-Architectedフレームワークに完全に準拠した評価が実現されています。

AWS WAFR Acceleration with GenAI の気になるところ

非常に素晴らしく感銘を受けるツールですが、気になる点もあります。OSSのため気になる箇所があれば自分で修正できますが、例えば以下のような点が挙げられます。

  • Well-Architected Toolのワークロードは初回作成のみに対応しており、更新や既存ARNの指定には対応していません。
  • Amazon Textractのデータ抽出は日本語に対応していないため、設計成果物は英語版をアップロードする必要があります。

まとめ

Well-Architected Frameworkは、AWSのベストプラクティスを実現するための近道となり得る素晴らしいナレッジです。このナレッジをAmazon BedrockのKnowledge Basesの情報源とすることで、Well-Architected Frameworkレビューを加速できます。

なお、生成AIの基盤モデルにはClaude 3.7 Sonnetが使用されています。Amazon Textractを使用しているため日本語ドキュメントへの完全な対応はされていませんが、WAFRレビューのプロセスを加速するアイデアとして十分な内容を提供しています。

本OSSの優れた点を参考に、理想的なWAFR Accelerationを実現していきたいですね!

この記事が参考になれば幸いです。