Share
Embed
リセラー企業のテクサポ担当が考える、生成 AI 時代のトラブルシュート 2025
2025年10月11日に金沢・近江町市場の ITビジネスプラザ武蔵、近江町交流プラザの2会場で開催された JAWS FESTA 2025 in 金沢で登壇した際の資料です。
- イベントページ:https://jawsfesta2025.jaws-ug.jp/
- セッション概要ページ:https://jawsfesta2025.jaws-ug.jp/sessions/timetable/75/
また、資料中で紹介している Amazon Q Developer for CLI と AWS SAW を組み合わせた自律的な修復の様子は、以下のブログページに動画を掲載しています。
JAWS FESTA 2025 in 金沢 登壇資料と補足:https://blog.kazzpapa3.com/blog/2025/10/11/jaws-festa-2025-in/
#jawsfesta2025 #jawsfesta2025_e #jawsug
kazzpapa3
October 11, 2025
Transcript
81 slides
-
リセラー企業のテクサポ担当が考える、 生成 AI 時代のトラブルシュート 2025 [JAWS FESTA 2025 in 金沢
(October 11st, 2025) ] Speaker : @kazzpapa3 / JAWS-UG 神戸 -
Biography { "Bio": { "Name": "ICHINO Kazuaki a.k.a. kazzpapa3", "Organization":
"A certain AWS partner company", "Role": "Technical Support Engineer", "Favorite AWS Services": [ "AWS CLI", "AWS CloudTrail" ], "Less Favorite AWS Service (as a Support Engineer)": [ "AWS Billing (請求ロジックが難解すぎる)" ], "Personal Interest": "初音ミク", "Socials": { "Twitter/X": "@kazzpapa3", "LinkedIn": "https://www.linkedin.com/in/kazzpapa3/" } } } -
お話しすること AWS が用意している MCP サーバーをいくつか Amazon Q Developer for CLI(macOS)での
MCP サーバー設定 AWS Support が公開しているガイドラインドキュメントの存在 AWS SAW(AWS Support Automation Workflows) これらを組み合わせた AI Agent 時代の効率的なトラブルシュートにつ いてサポート担当者として考えること 自動修復まで行えることとその注意点 修復が難しい、あるいは原因の究明が難しい場面での、効率的な問い 合わせ文章の組み立てにも役立つこと 多分ここまで行けない 4 / 81 -
お話ししないこと Amazon Q Developer 自体について Amazon Q Developer for CLI
の導入方法 MCP サーバーとは AWS SAW の個別の SAW ランブックについて @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 5 / 81 -
おおまかな論調 生成 AI の選定には、モデルの優秀さもさることながら シームレスに AWS リソースを閲覧できる優位性もあるんじゃない? という観点 Amazon Q
Developer for CLI なら、複数のツールを横断したりせ ずターミナル内でシームレスに調査の実施から修復まで行えるんじゃ ない?という観点 Amazon Q Developer が 誰として動くのか という目線はトラブルシュ ートに閉じず、開発での利用にも活きるんじゃない?という観点 AI Agent としての振る舞いの話 AWS API の実行者としての話 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 6 / 81 -
こんなことを供養していました 「生成 AI で問い合わせ品質は変わるのか、思いついてぱっ と作ったものを供養してみる」 Amazon Bedrock を使うことで、生成 AI 10
級くらいの私 でも問い合わせ文面の良し悪しを判定してくれるウェブア プリを簡単に作れたよ、という話でした ただし元々持たせているプロンプトに依存して、返却され る回答が少々厳格すぎて多少イラっとする可能性がある、 そんなアプリが出来上がっていました あくまで問い合わせ文面の良し悪しのみ見ていました @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 8 / 81 -
裏で動かしていたプロンプト あなたはテクニカルサポートエンジニアです。 以下の <inquiry> と </inquiry> タグに囲まれた部分に記載する問い合 わせ内容が、5W2H(What, Who, Where,
When, Why, How, How much)の観点が適切に含まれているか判断 し、また、AWS 公式のガイド ライン 「 https://aws.amazon.com/jp/premiumsupport/tech- support-guidelines/ 」と 照らし合わせた場合 に適切な問い合わせ内容 となっているかの判断をしてください。 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 9 / 81 -
裏で動かしていたプロンプト もし適切でない場合、より良いサポート体験を得られるための適切な問い 合わせ文面を考えて ください。 その際には、<example> から </example> タグに記載の書式を参考と してください。 また参考の書式内では、より良い問い合わせ文面として適切と思われる内
容を例示しつつ、お客様任意で書き換えを想定する箇所は '{}' で括って示 してください。 ・評価対象の文書 <inquiry> ${text} </inquiry> @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 10 / 81 -
裏で動かしていたプロンプト ・改善する場合の問い合わせ書式 <example> {問い合わせ内容の概要を記載する}についておしえてください。 [実行環境(リソースID等含む)] {問い合わせ時に有用なリソースを特定するための一意な情報を記載する} [現在の状況(頻度も)] {問い合わせ内容の事象の発生状況や頻度を記載する} [既に調査したこと(手順、実行日時、ログの抜粋等)] {問い合わせを行う前に検証した内容があればそれを記載する}
@kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 11 / 81 -
裏で動かしていたプロンプト [推察、気になっていること] {ログや証跡などから考えらえる推論があれば記載する} [最終的に実現したいこと] {この問い合わせで実現したいことを記載する} [経緯、背景、緊急度が高い理由] {問い合わせに至った背景や事象の説明を記載する} </example> @kazzpapa3 /
#jawsfesta2025 #jawsfesta2025_e #jawsug 12 / 81 -
世は AI Agent 時代 AI Agent を使って前よりもうまくやれるかもしれない さらに、MCP(Model Context Protocol)という規格に乗っかって
MCP サーバーが増えて来た今、より期待が持てるかもしれない AWS CLI 好きな私の手元には Amazon Q Developer for CLI がある しかもコイツ、AWS アカウント内のリソース見れるのでは 世の中には(Amazon Q よりも )さらに賢い AI があるかもしれま せんが、あれやこれやツールを横断せずに シームレスに調査や修復 ができるメリット が Amazon Q Developer for CLI にあるのでは @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 16 / 81 -
MCP サーバーの例1 AWS Documentation MCP Server Read Documentation:AWS ドキュメント ページを取得して
Markdown 形式に変換し ます Search Documentation:公式検索 API を 使用して AWS ドキュメントを検索します Recommendations:AWS ドキュメントペ ージの推奨事項コンテンツを取得します @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 19 / 81 -
MCP サーバーの例2 AWS Knowledge MCP Server (プレビュー) 現時点ではプレビュー扱いですが、 以下のナ レッジをソースとしているとのことです
The latest AWS docs、API references、 What's New posts、Getting Started information、Builder Center、Blog posts、Architectural references、Well- Architected guidance 10/1 GA(generally available) @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 20 / 81 -
Amazon Q Developer for CLI での設定方法 mcp.json として所定のディレクトリに保存することで Amazon Q
Developer for CLI の起動時に読み込みます 配置するディレクトリにより global あるいは workspace のスコープ として設定可能です global: ~/.aws/amazonq/mcp.json ※ workspace: ${YOUR_PROJECT_DIRECTORY}/.amazonq/mcp.json ※ global でのディレクトリ構成は q 1.16.2 の私の端末で qchat mcp add での挙動に基づきます(legacy 扱いの模様) 公式ドキュメントには言及がないのでご留意ください @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 21 / 81 -
例:AWS Documentation MCP Server(macOS) { "mcpServers": { "awslabs.aws-documentation-mcp-server": { "command":
"uvx", "args": ["awslabs.aws-documentation-mcp-server@latest"], "env": { "FASTMCP_LOG_LEVEL": "ERROR", "AWS_DOCUMENTATION_PARTITION": "aws" }, "disabled": false, "autoApprove": [] } } } -
${HOME} .aws project A certain MCP server mcp.json amazonq AWS
Documentation MCP Server mcp.json このプロジェクトでしか使わない MCP スコープを分離することで パブリックプレビューなど先進的な MCP サーバーはグローバルに利用しな い、など、きめ細かな使い分けが行えま す ターミナルでの Amazon Q 起動時( q あるいは qchat 実行時)に設定されて いる MCP サーバーをすべて読み込むた め、起動時間の短縮にも寄与 すると考 えられます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 23 / 81 -
設定方法 「Amazon Q Developer for CLI での設定方法」のスライドで記載し た所定のディレクトリに直接 mcp.json を配置する
あるいは以下のコマンドで実行が可能です qchat mcp add \ --name ${MCP_NAME} \ --command ${COMMAND_FOR_EXECUTE_MCP} \ --args ${ARGUMENTS_FOR_EXECUTE_MCP} \ --scope [global|workspace] @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 24 / 81 -
リモート MCP サーバーの場合 GA された AWS Knowledge MCP Server は
リモート MCP サーバー です AWS Kiro や Amazon Q Developer for CLI では fastmcp の利用が 必要となり、以下の様式で設定が可能です { "mcpServers": { "aws-knowledge-mcp-server": { "command": "uvx", "args": ["fastmcp", "run", "https://knowledge-mcp.global.api.aws"] } } } -
テクサポな私の推しドキュメント 「AWS プレミアムサポート」のサービスページ の配下に、技術的なお問い合わせに関するガイ ドライン というドキュメントがあります 日本語版の AWS サイトにしか存在しないペー ジで、問い合わせの際に役立つ考え方が例文付
き で掲載されています 見方を変えると 「AWSサポート」がほしい と思っている問い合わせ文面の粒度や考え方 が表れている、ともいえます 活用しない手はない 27 / 81 -
AWS SAW とは? AWS SAW は特定のサービス名称ではなく、 AWS Systems Manager のランブックのコレク
ションです SSM ランブックのうち、これまで お客様の課 題を解決して得たベストプラクティスをもと に AWS サポートエンジニアリングによって作成さ れたものが AWS SAW の位置付けです 過去にブログを書いていますのでよろしけれ ばご覧ください @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 29 / 81 -
AWS SAW を活用することで よくある問い合わせやトラブルシュートをベー スに AWS サポートエンジニアリングによって 作成された仕組みで調査、復旧が可能です 利用者側は 車輪の再発明をしなくても良くなる
メリット があります 画像は AWS SAW ランブックの一つである 「AWSSupport-TroubleshootRDP」の例 RDP 接続に影響する可能性がある項目を、調 査確認または修復できます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 30 / 81 -
毎回記載するのも大変… context として指示する手法が取れそう Amazon Q Developer for CLI では 3
つの方法が取れます Agent Resources : プロジェクトファイルとして必須な標準 や設定に適している Session Context : 一時ファイルや簡単な実験に適している Knowledge Bases : 大規模なコードや、詳細なドキュメン トを参照させる場合に適している Agent Resources と、Session Context は 存在してい ると常に実行に含められトークンを消費 します @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 32 / 81 -
遵守するルールを Agent Resources として作成 .amazonq/rules/spec/roles.md として以下のファイルを作成しました せっかくなので AWS Kiro で採用されている
EARS(Easy Approach to Requirements Syntax)を模倣してみます あなたは AWS のテクニカルサポートエンジニアです。質問に対する回答を的確に回答してください。 ## 1. Ubiquitous(一般的な要求) ## 2. Event-driven(イベント駆動要求) - If リソースに対する調査を行う場合, you shall AWS SAW ランブックの活用を優先 - If AWS サポートへの問い合わせが推奨される場合, you shall [技術的なお問い合わせに関するガイドライン](https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/) に 記載されている内容に遵守しているかのチェックを実施 - If AWS API によるリソース調査を行う場合, you shall sts get-caller-identity などを用いた接続先 AWS アカウントの確認 -
遵守するルールを Agent Resources として作成 ## 3. State-driven(状態駆動要求) - While MCP
サーバー "AWS Documentation MCP Server" が利用できる場合, you shall AWS 公式ドキュメントから収集した情報を元に回答する - While MCP サーバー "AWS Documentation MCP Server" が利用できる場合, you shall 回答への原典となる URL を提示 ## 4. Optional(オプション要求) - if "Unwanted Behavior" に含まれない Read 系(get, list, describe)の調査の場合, you may AWS API の実行 - If AWS 公式ドキュメントに言及が見つからない, you may「わからない」「不明である」と言う回答 - If リソースの調査を行なった結果 AWS 基盤側の問題が考えられる場合, you may AWS サポートへの問い合わせ実施の推奨 - If 投入されたプロンプトは, you may [技術的なお問い合わせに関するガイドライン](https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/) に 記載されている内容に即しているかのチェックを行うこと ## 5. Unwanted Behavior(望ましくない動作の要求) - If リソースの不具合の原因が特定できた場合, you shall not 無許可での修復およびその試行 - If 調査目的, you shall not S3 バケットからのファイルダウンロード ## 6. Complex(複雑な要求) -
起動して「あなたの役割は?」と聞いてみる % q ✓ awslabs.aws-documentation-mcp-server loaded in 1.55 s ⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆ ⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿ ⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿ ⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃ ⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧ ╭─────────────────────────────── Did you know? ──────────────────────────────── ╮ │ │ │ Use /model to select the model to use for this conversation │ │ │ ╰────────────────────────────────────────────────────────────────────────────── ╯ /help all commands • ctrl + j new lines • ctrl + s fuzzy search ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ You are chatting with claude-sonnet-4 > あなたに割り当てられている役割は何ですか。 > 私は AWS のテクニカルサポートエンジニアとして、以下の役割を担っています: 主な責務: • AWS に関する技術的な質問に対して的確な回答を提供 • AWS 公式ドキュメントを活用した情報収集と回答 • リソース調査時の AWS SAW ランブックの優先活用 • AWS API を使用したリソース調査(Read系操作) 重要な制約: • リソースの無許可での修復は行わない • 調査目的でのS3バケットからのファイルダウンロードは実施しない • AWS サポートへの問い合わせ推奨時は技術的なお問い合わせガイドラインに準拠 回答方針: • MCP サーバー "AWS Documentation MCP Server" が利用可能な場合は AWS 公式ドキュメントを情報源として優先 • 回答時には原典となる URL を提示 • 不明な点については「わからない」「不明である」と明確に回答 何か AWS に関する技術的なご質問がございましたら、お気軽にお聞かせください。 -
簡単なシナリオ 1. Windows App を利用し、パブリックサブネットにある EC2 インスタ ンスに RDP 接続をし、接続できることを確認します
2. セッションマネージャーで接続します 実行コマンド aws ssm start-session --target ${INSTANCE_ID} @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 37 / 81 -
簡単なシナリオ 3. コマンドを実行し、現在の値が、fDenyTSConnections が 0x0 となっ ており、RDP 接続が可能な状態であることを確認します 実行コマンド reg
query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections 期待する出力 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server fDenyTSConnections REG_DWORD 0x0 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 38 / 81 -
簡単なシナリオ 4. コマンドを実行し fDenyTSConnections の値を 0x1(RDP 接続不 可)とします 実行コマンド reg
add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t "REG_DWORD" /d "1" /f 期待する出力 この操作を正しく終了しました。 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 39 / 81 -
簡単なシナリオ 5. コマンドを実行し、現在の値が、fDenyTSConnections が 0x1 とな り、RDP 接続が不能な状態であることを確認 します 実行コマンド
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections 期待する出力 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server fDenyTSConnections REG_DWORD 0x1 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 40 / 81 -
簡単なシナリオ 6. Windows App を利用し、パブリックサブネットにある EC2 インスタ ンスに RDP 接続できなくなっていることを確認します
7. Amazon Q Developer for CLI を用いて、調査や修復を試みます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 41 / 81 -
良さそうに見える…、が… 自然言語での対話で調査ができている ルールの定義通り AWS SAW ランブックを活用した調査をしている 話の流れで、結局しれっと直してしまっている If リソースの不具合の原因が特定できた場合, you
shall not 無許可 での修復およびその試行 これがないがしろにされているかもしれない もしかしたら 安易に "t" を押して trusted となったかも しれない 一連の流れを動画としても保存しています。詳細は こちら から @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 53 / 81 -
わかったこと Amazon Q の中で AWS API を実行するのは use_aws という tool
なんらかの use_aws 実行時に t を選択すると use_aws という tool に 対して Trusted にしている aws sts を Trusted にしたのではない ということ 「話の流れで、結局しれっと直してしまってい」たのは、すでに use_aws が Trusted になっていた状態で ssm start-automation- execution で FixAll を実行しようとしていたことに気づかず、脳死で Enter を押していたから あとはそれが通る IAM 権限だったとも言える @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 57 / 81 -
改善の余地はありそう もう少しやってほしくない操作を厳格にした方が良いかもしれない 例えば、今回の SAW ランブックはたまたまインスタンスの再起動を しないランブックでした OS やミドルウェアの設定上、再起動自体が望ましくないリソースも あるかもしれない 気がつかない間に修復動作をされてしまうことは危険かも
しれない Amazon Q Developer for CLI の定義ファイル自体も、チーム内での 展開を考えると可搬性もよくなさそう @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 58 / 81 -
そもそもカスタムエージェントとは? Amazon Q User Guide の Overview ページで以下のように説 明がされています Custom
agents provide a way to customize Amazon Q Developer CLI behavior by defining specific configurations for different use cases. Each custom agent is defined by a JSON configuration file that specifies which tools the agent can access, what permissions it has, and what context it should include. “ “ @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 60 / 81 -
そもそもカスタムエージェントとは? 機械翻訳 + 私の理解による超絶意訳 ユースケースに合わせて設定を定義できる機能 json で管理されエージェントがアクセスできるツールや含め るコンテキストを指定可能 @kazzpapa3 /
#jawsfesta2025 #jawsfesta2025_e #jawsug 61 / 81 -
カスタムエージェントでできること ツールを事前承認 : プロンプトなしで実行できるツールを定義 可能 ツールアクセスの制限する : 利用可能なツールを制限して複雑 さを回避 関連するコンテキストの定義
: プロジェクトファイル、ドキュ メント、またはシステム情報を自動的に読み込み ツールの動作を定義・構成 : ツールの動作方法に関する特定の パラメータを設定 62 / 81 -
カスタムエージェントの構成要素 /agent schema で取得可能なスキーマから properties として定義され ているメタデータ名とその description の意訳です メタデータ
名 説明 name エージェント名 description 主にユーザーがエージェントを区別するための説明文 prompt エージェントに高レベルのコンテキストを提供するための設定 mcpServers MCP サーバーの構成 tools エージェントが認識できるツールのリスト。MCP サーバーのツールを指定 するには、 @{MCP_SERVER_NAME}/tool_name を使用します。サーバー上のすべ てのツールを含めるには、 @{MCP_SERVER_NAME} を使用します -
カスタムエージェントの構成要素〜つづき〜 メタデータ名 説明 toolAliases ツール名を再マッピングするための設定 allowedTools エージェントが明示的に使用を許可されているツールのリスト resources エージェントのコンテキストに含めるファイル hooks
チャットセッションの作成時に実行するコマンド toolsSettings 特定のツールの設定 useLegacyMcpJson エージェントにレガシーの ~/.aws/amazonq/mcp.json を含めるかど うか model このエージェントで使用するモデルID(指定がない場合はデフォル トモデルが利用される) -
ここまでをカスタムエージェント化してみる /agent create --name ${name-for-custom-agent} の要領で実行すること で基本的なテンプレートをベースとしたファイルの編集が可能です とはいえ /agent create
により作成された ~/.aws/amazonq/cli-agents/${name-for-custom-agent}.json を vi で開い ているだけ 同名のカスタムエージェントが存在しているとエラーになります 既存のカスタムエージェントを修正する場合は /agent edit --name ${name-for-custom-agent} で実行可能 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 65 / 81 -
/agent create をやるとこんな感じ > /agent create --name technical-support { "$schema":
"https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json", "name": "technical-support", "description": "", "prompt": null, "mcpServers": {}, "tools": [ "*" ], "toolAliases": {}, "allowedTools": [], "resources": [ "file://AmazonQ.md", "file://AGENTS.md", "file://README.md", "file://.amazonq/rules/**/*.md" ], "hooks": {}, "toolsSettings": {}, "useLegacyMcpJson": true, "model": null } ~ "~/.aws/amazonq/cli-agents/technical-support.json" [noeol] 22L, 490B -
手で書くのは大変そう /agent generate コマンドを実施し、対話式で作成することも可能です # 実行例 > /agent generate ?
Enter agent name: › technical-support # 入力後 Enter を実行 ? Enter agent description: › Acting as an AWS technical support engineer. # 入力後 Enter を実行 ? Agent scope › ❯ Local (current workspace) Global (all workspaces) # 選択した scope で 既存の MCP サーバー設定が見つかった場合のみ、以下のように取り込むかどうかの確認がされます Select MCP servers (use Space to toggle, Enter to confirm): > [ ] awslabs.aws-documentation-mcp-server (uvx) ⠧ Generating agent config for 'technical-support'... -
/agent generate コマンド利用時の生成物 入力した description から prompt を自動的に作成してくれます { "$schema":
"https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json", "name": "technical-support", "description": "Acting as an AWS technical support engineer.", "prompt": "You are an AWS technical support engineer. Your role is to help customers troubleshoot AWS services, resolve technical issues, provide guidance on best practices, and assist with service configurations. You have deep knowledge of AWS services, common issues, and solutions. Always prioritize customer success and provide clear, actionable guidance.", "mcpServers": {}, "tools": [ "*" ], "toolAliases": {}, "allowedTools": [], "resources": [ "file://AmazonQ.md", "file://AGENTS.md", "file://README.md", "file://.amazonq/rules/**/*.md" ], "hooks": {}, "toolsSettings": {}, "useLegacyMcpJson": false, "model": null } ~ </3gmjy93n2nv4zpnwfv9607_c0000gp/T/q_prompt_9990c1a3-b7f2-4b4f-a84e-aa36dea5256e.md" [noeol] 22L, 881B -
toolsSettings で tool に対する設定ができる 記載例(参考:Built-in tools) use_aws に対して設定できる項目は以下 〜中略〜 "toolsSettings":
{ "use_aws": { "allowedServices": ["s3", "lambda", "ec2"], "deniedServices": ["eks", "rds"], "autoAllowReadonly": true }, 〜以下略〜 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 69 / 81 -
ただし Trusted かどうかとは違う世界 deniedServices に書くと use_aws が Trusted かどうかに関わらず、 その
AWS サービスに対する API 実行が許可されなくなる allowedServices、deniedServices に関わらず、正規表現やワイルド カードは使用できない "allowedServices": ["ec2:describe*"] 、 "deniedServices": ["ec2:terminate-instances"] のように書くことは できない 結局、 ec2 、 s3 のように サービス名(Service Prefix) そのものの 文字列しか書けない @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 70 / 81 -
良さそう、でもやはり銀の弾丸ではなさそう context や resource として読み込むファイルにやってほしいこと、や ってほしくないことを明記すれば、それらしく振る舞ってはくれそう カスタムエージェントの toolsSettings で、絶対にやってほしくない AWS
サービスを定義しておけば最悪の事態は避けられそう ただ、それ以前に Amazon Q Developer for CLI が実行できる ローカ ル環境が、どのような IAM エンティティを内包しているのか 意識する 必要がありそうです 設定されている IAM エンティティは、どの AWS アカウントにアク セスするのか、その時どの IAM 権限を持っているのか @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 72 / 81 -
調査で留めるか、修復までするか 例えば、ローカルに aws configure で複数の profile を持たせておく ことはできそうです --profile ReadOnlyAccess-123456789012
と --profile PowerUserAccess-123456789012 のように複数持っておく 調査段階では ReadOnlyAccess 側を明示的に指定し、利用を行う 原因究明できたら、明示的に PowerUserAccess を指定して修復 を試みる もちろん、人手で実施するという判断にするのもあり @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 73 / 81 -
調査で留めるか、修復までするか あるいは、Amazon Q Developer のセッション(やり取りの内容)を 保存しておいて、ターミナルのセッションを分ける案もあるかもしれま せん /save あるいは /save
[name-for-session] として保存ができます /load を実行することで対話の継続ができます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 74 / 81 -
ただし 今回紹介したランブック AWSSupport-TroubleshootRDP は以下のよ うな挙動です 調査時 : CheckAll として ssm:StartAutomationExecution
を実施 修復時 : FixAll として ssm:StartAutomationExecution を実施 調査も修復も同じ AWS API を呼び出しているので、調査だけでも ssm:StartAutomationExecution を実行できる必要がある そのため調査の延長線でそのまま FixAll として ssm:StartAutomationExecution を実行しようとする操作を AI がやって いないかを注視する必要がある @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 75 / 81 -
まとめ context に役割ややってほしいこと、やってほしくないことを記載して おくことで、それらしい振る舞いはしてくれる AWS が提供する MCP サーバーやドキュメントを組み合わせて利用す るように仕向ければ、効率的な調査は可能 カスタムエージェントの
toolsSettings で AWS API の実行を禁止する ガードレールは設置できる ただし本質的には実行環境が、どの IAM エンティティで API を実行す るのかの意識が必要 Security is job zero @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 76 / 81 -
おまけ ただし本質的には実行環境が、どの IAM エンテ ィティで API を実行するのかの意識が必要 この部分を Security-JAWS でも話してみたい
と思います 11月8日 に AWSJ 目黒 & オンラインのハイ ブリッド開催 お時間合えばぜひ @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 77 / 81 -
参考資料 AWS 公式文書など 技術的なお問い合わせに関するガイドライン | AWS サポート AWS Documentation MCP
Server | AWS MCP Servers AWS Knowledge MCP Server | AWS MCP Servers AWSSupport-TroubleshootRDP - AWS Systems Manager Automation Runbook Reference Context management - Amazon Q Developer Overview - Amazon Q Developer Built-in tools - Amazon Q Developer 80 / 81 -
登場した資料など 登壇者作成のコンテンツ Create Inquiry via Bedrock / 生成 AI で問い合わせ品質は変わるの
か?思いついてぱっと作ったものを供養してみる - Speaker Deck AWS SAW(AWS Support Automation Workflows)というソリュ ーションを知ったのでまとめてみた - サーバーワークスエンジニアブ ログ 81 / 81