AWS Well-Architected Tool でセルフアセスメント実施済みのワークロードに対して、Amazon Q Developer を使って優先度の高い未実装ベストプラクティスを特定できるか試してみた
いわさです。
みなさん AWS Well-Architected Framework レビュー実施していますか。
私は実施する際には AWS Well-Architected Tools を使うようにしています。チェックすべき設問が網羅されているのは当たり前ですが、マイルストーンを設定したりレンズのアップデートに追従しやすいからです。
今回この AWS Well-Architected Tools と Amazon Q Developer を併用して詳細なインサイトを得る作業を少し自動化したのでその様子を紹介します。
AWS Well-Architected Tools と改善項目
この検証の背景ですが、まず AWS Well-Architected Tools が抽出する改善項目とリスクについて説明します。
この Well-Architected Tools を使ってフレームワークレビューを実施すると、そのワークロードの改善項目がどの程度あるのか可視化することができます。
これによって高リスク(HRIs)と中リスク(MRIs)の改善項目を把握することが可能です。
レンズレビュー実施後に改善計画が抽出された様子
一方で、この後は改善項目に対して実際の是正対応を進める形になります。
ドキュメントでは、あくまでもガイドラインなのでベストプラクティス未実装時のビジネスインパクトから対応要否を判断すべきとしつつ、基本的にはすべての HRI と MRI を実装することを推奨はしています。
この対応要否を判断する際はやはりリスクの度合いや重要度は参考にしたいところです。
ここで、まずは HRI をゼロにすることを目指したとき、それぞれの設問に対してさらに詳細な分析が必要になります。
例えば以下は Well-Architected Framework のセキュリティの柱の設問のひとつである SEC1 になります。
この SEC1 が「設問」であり、その下の選択項目ひとつづつがベストプラクティスとなっています。
こちらはほとんどのベストプラクティスを実装しているようですが、結果としては「高リスク」と判定されてしまいました。
なぜかというと未実装のベストプラクティスのうち「脅威モデルを使用してリスクを特定...」については重要度が高いベストプラクティスだからです。重要度が高いベストプラクティスが未実装だと、その他のベストプラクティスがどれだけ実装されていても HRI と判定されます。
なので、全ての実装を目指しつつも現実は優先度をつける必要があるので、推奨事項に沿って対応する場合は重要度の高いベストプラクティスを見極める必要があります。
ベストプラクティスの重要度を判定する方法
設問への回答が終わると、Well-Arhitected Tools はすべての未実装のベストプラクティスを並列で「要対応」として表示します。
この情報を元に改善計画を立てるのですが、実際には情報が色々不足しているので上記リンクからもう少し詳細な分析が必要になります。
このリンクは Well-Architected Framework ドキュメントの対象ベストプラクティスページへのリンクとなっていまして、このページを確認すると BP ごとの重要度や実装ガイダンスなど追加の情報を得ることができます。
例えば、先程の SEC1 でいうと「脅威モデルの使用」と「新しいセキュリティサービスと機能の定期評価」が挙げられていますがそれぞれドキュメントから重要度の判断ができます。
こちらを参考に例えば SEC1 であれば「まずは脅威モデルの使用について組織として必要なのか検討する」というような優先度をつけた対応ができるようになります。
これらのベストプラクティスごとの重要度ですがおそらく本日時点で API から取得はできないと認識しています。
設問の並びは一応重要度別にはなっているっぽいのですが。
また、実装ガイダンスについても調べる必要があるのでベストプラクティスごとにドキュメントを確認するのは避けられないかなと思います。
ドキュメント確認を Amazon Q Developer に任せたい
前置きが長くなりましたが、要はこのセスメント済みワークロードからハイリスク項目を取得して、ベストプラクティスごとに重要度や実装ガイダンスを整理する作業を AI エージェントに任せたいんです。自動化したいんです。
Amazon Q Developer はuse_aws
が統合されているので API 経由で Well-Arhictected Tools ワークロードにアクセスできるはずです。また AWS Documentation MCP Server を使うことで、AWS のドキュメント検索も AI エージェントが行うことができます。
この Amazon Q Developer + AWS Documentation MCP Server を使って今回はハイリスク項目の抽出と対応優先度の高いベストプラクティスを抽出してみました。
HRIs の取得
そもそも Well-Architected Tools の情報にアクセスできるのだろうか?確認してみましょう。
% q chat
✓ playwright loaded in 1.30 s
✓ awslabsaws_documentation_mcp_server loaded in 3.44 s
⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧
╭─────────────────────────────── Did you know? ────────────────────────────────╮
│ │
│ Run /prompts to learn how to build & run repeatable workflows │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
/help all commands • ctrl + j new lines • ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-4-sonnet
> hogeプロファイルを使って、東京リージョンにある AWS Well-Architected Tools のワークロードにアクセスしてください。ワークロードはたくさんあるので全件取得してください。
hogeプロファイルを使って東京リージョン(ap-northeast-1)のAWS Well-Architected Toolsのワークロードを全件取得します。
🛠️ Using tool: use_aws (trusted)
⋮
● Running aws cli command:
Service name: wellarchitected
Operation name: list-workloads
Parameters:
Profile name: hoge
Region: ap-northeast-1
Label: 東京リージョンのWell-Architectedワークロード一覧を取得
⋮
● Completed in 1.216s
NextTokenが返されているため、さらに続きがあります。全件取得するために次のページも取得します。
🛠️ Using tool: use_aws (trusted)
⋮
● Running aws cli command:
Service name: wellarchitected
Operation name: list-workloads
Parameters:
- next-token: "hogehoge"
Profile name: hoge
Region: ap-northeast-1
Label: 東京リージョンのWell-Architectedワークロード一覧の続きを取得
⋮
● Completed in 0.949s
今度はNextTokenが返されていないため、全件取得が完了しました。
東京リージョン(ap-northeast-1)のAWS Well-Architected Toolsのワークロードを全件取得しました。合計19個のワークロードが見つかりました:
ワークロード一覧:
1. bhoge (ID: bae1d6c3bc309512ed530a68913768cb)
• 最終更新: 2024-09-17
• レンズ: Well-Architected, SaaS
• リスク: 未回答48, 中17, 高6, なし1
:
2. workload1 (ID: 52febb45bc03a6dad09fe69efb2e0b88)
• 最終更新: 2021-11-30
• レンズ: カスタムレンズ, Well-Architected, Serverless
• リスク: 未回答61, 高1
全19個のワークロードが取得できました。多くのワークロードで未回答の質問が残っており、継続的なレビューが必要な状況が確認できます。
>
取得できていそうですね。
このワークロード一覧に HRIs と MRIs の件数については含まれているので、全ワークロードのリスク状況はこれだけで把握できそうです。
ちなみに Well-Arhicted Tools 系の API は 10 件づつ取得されることが多く、全件取得など NextToken の使用を伝えないと 10 件までしか取得してくれない時があるのでプロンプトを作る時に意識しておくと良いと思いました。
ハイリスク設問の抽出も API 経由で行えます。
> ワークロード Hoge にアクセスしてください。ハイリスク項目の一覧を抽出できますか
ワークロード「Hoge」のハイリスク項目を抽出します。まず、ワークロードの詳細情報を取得してから、ハイリスク項目を特定します。
🛠️ Using tool: use_aws (trusted)
⋮
● Running aws cli command:
Service name: wellarchitected
Operation name: get-workload
Parameters:
- workload-id: "1111111111111111111111111"
Profile name: hoge
Region: ap-northeast-1
Label: Hogeワークロードの詳細情報を取得
⋮
● Completed in 1.118s
次に、ワークロードのレンズレビューを取得して、ハイリスク項目を特定します。まずWell-Architectedレンズから確認します。
:
ワークロード「Hoge」のハイリスク項目を抽出しました。以下が詳細な分析結果です:
## ワークロード「Hoge」のハイリスク項目一覧
### **Well-Architectedレンズ(31個のハイリスク項目)**
#### **コスト最適化(10項目)**
1. クラウド財務管理の実装 - 組織全体でのコスト意識の文化創造のみ実装
2. 使用量のガバナンス - 選択された項目なし(アカウント構造は適用外)
3. コストと使用量の監視 - 詳細情報源、属性識別、ツール設定、組織情報の追加は実装済み
4. サービス選択時のコスト評価 - 「None of these」を選択
5. リソースタイプ・サイズ・数の選択 - 共有リソースの検討のみ実装
6. 価格モデルの活用 - リージョンベースのコスト選択のみ実装
7. データ転送料金の計画 - サービス実装によるデータ転送コスト削減のみ実装
8. 需要とリソース供給の管理 - 「None of these」を選択
9. 新サービスの評価 - 「None of these」を選択
#### **運用の優秀性(8項目)**
1. 優先順位の決定 - 外部・内部顧客ニーズ、コンプライアンス要件の評価は実装済み
2. 組織構造 - 変更・例外要求メカニズムのみ実装
3. 組織文化 - エグゼクティブスポンサーシップ、エスカレーション推奨、実験推奨、スキル向上推奨は実装済み
4. ワークロードの可観測性の実装 - 「None of these」を選択
5. デプロイメントリスクの軽減 - テストデプロイメント、安全なデプロイメント戦略は実装済み
6. 運用準備の確認 - 情報に基づくデプロイメント決定、サポートプラン作成は実装済み
7. ワークロード可観測性の活用 - 「None of these」を選択
8. ワークロードとオペレーションイベントの管理 - エスカレーションパス定義、顧客コミュニケーション計画は実装済み
9. 運用の進化 - フィードバックループ、改善ドライバー定義、洞察の検証は実装済み
#### **パフォーマンス効率(2項目)**
1. 適切なクラウドリソースとアーキテクチャパターンの選択 - クラウドサービス・機能の学習のみ実装
2. ネットワークリソースの選択と設定 - ネットワークプロトコル選択、ワークロード配置場所選択は実装済み
3. パフォーマンス効率をサポートするプロセス - ワークロードとサービスの最新維持のみ実装
#### **信頼性(1項目)**
1. 分散システムでの相互作用設計(障害軽減) - クライアントタイムアウト設定、ステートレス化は実装済み
2. 信頼性のテスト - インシデント後分析のみ実装
3. 災害復旧の計画 - 「None of these」を選択
#### **セキュリティ(2項目)**
1. ワークロードの安全な運用 - 複数アカウント分離、ルートユーザー保護、制御目標識別、管理スコープ削減、脅威情報更新、セキュリティ制御自動化は実装済み
2. コンピュートリソースの保護 - 強化イメージからのプロビジョニング、手動管理・対話アクセス削減は実装済み
3. インシデントの予測・対応・復旧 - フォレンジック機能準備のみ実装
### **SaaSレンズ(2個のハイリスク項目)**
#### **運用の優秀性(1項目)**
1. テナント使用量・消費トレンドの分析メトリクスデータの取得・表面化 - 「None of these」を選択
#### **パフォーマンス効率(1項目)**
1. インフラリソース消費とテナントアクティビティ・ワークロードの整合性確保 - 「None of these」を選択
#### **信頼性(1項目)**
1. SaaSアプリケーションのマルチテナント機能のテスト - テナント分離検証、テナンシー設定変更の伝播確認は実装済み
## **主要な改善推奨事項**
1. コスト最適化の強化 - サービス選択、需要管理、新サービス評価プロセスの確立
2. 可観測性の実装 - アプリケーションテレメトリ、ユーザーエクスペリエンステレメトリ、依存関係テレメトリの実装
3. 災害復旧計画の策定 - RTO/RPO定義、DR戦略選択、テスト実施
4. セキュリティ強化 - 脆弱性管理、インシデント対応計画の包括的実装
5. SaaS特有の機能強化 - テナントメトリクス収集、動的スケーリング戦略、包括的マルチテナントテストの実装
これらのハイリスク項目に対処することで、ワークロードの全体的な品質と信頼性を大幅に向上させることができます。
>
件数のサマリが少しおかしいのですが、先程のワークロード一覧取得と同じで NextToken を使ったデータ取得を意識してプロンプトを調整すると正しい件数が取得できます。
ベストプラクティスごとの重要度を取得
そして、それぞれの設問に対してベストプラクティスが複数存在していますが、前述のとおりベストプラクティスごとにリスクが異なります。
残念ならが API で取得した情報からはそれぞれのベストプラクティスの重要度までは取得が出来ません。取得したデータは以下な感じです。
{
"QuestionId": "protect-compute",
"Risk": "HIGH", // ← 質問全体のリスクレベル
"Choices": [
{
"ChoiceId": "sec_protect_compute_vulnerability_management",
"Title": "Perform vulnerability management",
"Status": "NOT_SELECTED" // ← 選択状況のみ
},
{
"ChoiceId": "sec_protect_compute_hardened_images",
"Title": "Provision compute from hardened images",
"Status": "SELECTED" // ← 選択状況のみ
}
]
}
選択状況まではわかるけど、それぞれのベストプラクティスはわからないので、ここはドキュメントを使いましょう。
ポイントとしては、ベストプラクティスや推奨度に関する質問をするとドキュメントベースではなく推定ベースで回答することがあるので、推定はしないように伝えておいたほうが良いです。
> Well-Architected Frameworkのドキュメントから、それぞれのベストプラクティスの重要度が判定できます。今回セキュリティの柱でハイリスク判定されている設問に対して、未実装のベストプラクティスそれぞれに重要度を付与してください。重要度は推定せずにドキュメントから確認してください。
Well-Architectedフレームワークのドキュメントから、セキュリティの柱のハイリスク設問について、未実装のベストプラクティスの重要度をドキュメントから確認して付与します。
まず、SEC01(ワークロードの安全な運用)の未実装項目について確認しましょう。
🛠️ Using tool: search_documentation (trusted) from mcp server awslabsaws_documentation_mcp_server
⋮
● Running search_documentation with the param:
⋮ {
⋮ "arguments": {
⋮ "limit": 5,
⋮ "search_phrase": "SEC01 securely operate threat model Well-Architected security"
⋮ },
⋮ "name": "search_documentation"
⋮ }
⋮
● Completed in 1.902s
:
🛠️ Using tool: read_documentation (trusted) from mcp server awslabsaws_documentation_mcp_server
⋮
● Running read_documentation with the param:
⋮ {
⋮ "arguments": {
⋮ "max_length": 3000,
⋮ "url": "https://docs.aws.amazon.com/wellarchitected/2025-02-25/framework/sec_incident_response_develop_management_plans.html"
⋮ },
⋮ "name": "read_documentation"
⋮ }
⋮
● Completed in 0.339s
## **セキュリティの柱 - 未実装ベストプラクティスの重要度評価(ドキュメント確認済み)**
### **SEC01: ワークロードの安全な運用 (securely-operate)**
未実装項目:
1. SEC01-BP07 脅威モデリング - 脅威モデルを使用したリスクの識別と優先順位付け
• **重要度**: High (ドキュメント確認済み)
2. SEC01-BP08 新セキュリティサービス評価 - 新しいセキュリティサービスと機能の定期的な評価と実装
• **重要度**: Low (ドキュメント確認済み)
### **SEC06: コンピュートリソースの保護 (protect-compute)**
未実装項目:
1. SEC06-BP01 脆弱性管理 - 脆弱性スキャンとパッチ適用
• **重要度**: High (ドキュメント確認済み)
2. SEC06-BP04 ソフトウェア整合性検証 - 暗号化検証によるソフトウェア整合性確認
• **重要度**: Medium (ドキュメント確認済み)
3. SEC06-BP05 コンピュート保護自動化 - 自動スキャンと修復の実装
• **重要度**: Medium (ドキュメント確認済み)
:
## **最優先対応項目(重要度High・ドキュメント確認済み)**
1. SEC06-BP01 - 脆弱性管理 (High)
2. SEC10-BP01 - 主要人員識別 (High)
3. SEC01-BP07 - 脅威モデリング (High)
4. SEC11-BP03 - ペネトレーションテスト (High)
5. SEC11-BP07 - パイプラインセキュリティ評価 (High)
6. SEC10-BP02 - インシデント管理計画 (High)
これらの項目は、公式ドキュメントで「Level of risk exposed if this best practice is not established: High」と明記されており、最優先で対処すべき項目です。
>
AWS Documentation MCP Server で調査してくれていることがわかりますね。
人力でもドキュメントを確認してみたのですが、今回調べたベストプラクティスについて、すべて正しい重要度を取得出来ていました。
さいごに
本日は AWS Well-Architected Tool でセルフアセスメント実施済みのワークロードに対して、Amazon Q Developer を使って優先度の高い未実装ベストプラクティスを特定できるか試してみました。
優先度の高い未実装ベストプラクティスのみ特定が出来ましたね。
ベストプラクティスごとの優先度を判断したり、あるいはもう少し深堀りして実装ガイダンスの抽出なども出来そうです。
ドキュメントページを 1 ページづつ確認するため調査にまずまず時間がかかるのと数が多いとコンテキストウィンドウ周りも気をつけたほうが良いので、柱単位とか、ある程度範囲を絞ったほうが安全そうだなと思いました。