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のための詳細情報を入力します。ここでは、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を実現したいですね!

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