Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リセラー企業のテクサポ担当が考える、生成 AI 時代のトラブルシュート 2025

Avatar for kazzpapa3 kazzpapa3
October 11, 2025

リセラー企業のテクサポ担当が考える、生成 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

Avatar for kazzpapa3

kazzpapa3

October 11, 2025
Tweet

More Decks by kazzpapa3

Other Decks in Technology

Transcript

  1. 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/" } } }
  2. お話しすること AWS が用意している MCP サーバーをいくつか Amazon Q Developer for CLI(macOS)での

    MCP サーバー設定 AWS Support が公開しているガイドラインドキュメントの存在 AWS SAW(AWS Support Automation Workflows) これらを組み合わせた AI Agent 時代の効率的なトラブルシュートにつ いてサポート担当者として考えること 自動修復まで行えることとその注意点 修復が難しい、あるいは原因の究明が難しい場面での、効率的な問い 合わせ文章の組み立てにも役立つこと 多分ここまで行けない 4 / 81
  3. お話ししないこと Amazon Q Developer 自体について Amazon Q Developer for CLI

    の導入方法 MCP サーバーとは AWS SAW の個別の SAW ランブックについて @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 5 / 81
  4. おおまかな論調 生成 AI の選定には、モデルの優秀さもさることながら シームレスに AWS リソースを閲覧できる優位性もあるんじゃない? という観点 Amazon Q

    Developer for CLI なら、複数のツールを横断したりせ ずターミナル内でシームレスに調査の実施から修復まで行えるんじゃ ない?という観点 Amazon Q Developer が 誰として動くのか という目線はトラブルシュ ートに閉じず、開発での利用にも活きるんじゃない?という観点 AI Agent としての振る舞いの話 AWS API の実行者としての話 @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 6 / 81
  5. こんなことを供養していました 「生成 AI で問い合わせ品質は変わるのか、思いついてぱっ と作ったものを供養してみる」 Amazon Bedrock を使うことで、生成 AI 10

    級くらいの私 でも問い合わせ文面の良し悪しを判定してくれるウェブア プリを簡単に作れたよ、という話でした ただし元々持たせているプロンプトに依存して、返却され る回答が少々厳格すぎて多少イラっとする可能性がある、 そんなアプリが出来上がっていました あくまで問い合わせ文面の良し悪しのみ見ていました @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 8 / 81
  6. 裏で動かしていたプロンプト あなたはテクニカルサポートエンジニアです。 以下の <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
  7. 世は 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
  8. MCP サーバーの例1 AWS Documentation MCP Server Read Documentation:AWS ドキュメント ページを取得して

    Markdown 形式に変換し ます Search Documentation:公式検索 API を 使用して AWS ドキュメントを検索します Recommendations:AWS ドキュメントペ ージの推奨事項コンテンツを取得します @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 19 / 81
  9. 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
  10. 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
  11. 例: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": [] } } }
  12. ${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
  13. 設定方法 「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
  14. リモート 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"] } } }
  15. AWS SAW とは? AWS SAW は特定のサービス名称ではなく、 AWS Systems Manager のランブックのコレク

    ションです SSM ランブックのうち、これまで お客様の課 題を解決して得たベストプラクティスをもと に AWS サポートエンジニアリングによって作成さ れたものが AWS SAW の位置付けです 過去にブログを書いていますのでよろしけれ ばご覧ください @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 29 / 81
  16. AWS SAW を活用することで よくある問い合わせやトラブルシュートをベー スに AWS サポートエンジニアリングによって 作成された仕組みで調査、復旧が可能です 利用者側は 車輪の再発明をしなくても良くなる

    メリット があります 画像は AWS SAW ランブックの一つである 「AWSSupport-TroubleshootRDP」の例 RDP 接続に影響する可能性がある項目を、調 査確認または修復できます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 30 / 81
  17. 毎回記載するのも大変… context として指示する手法が取れそう Amazon Q Developer for CLI では 3

    つの方法が取れます Agent Resources : プロジェクトファイルとして必須な標準 や設定に適している Session Context : 一時ファイルや簡単な実験に適している Knowledge Bases : 大規模なコードや、詳細なドキュメン トを参照させる場合に適している Agent Resources と、Session Context は 存在してい ると常に実行に含められトークンを消費 します @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 32 / 81
  18. 遵守するルールを 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 アカウントの確認
  19. 遵守するルールを 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(複雑な要求)
  20. 起動して「あなたの役割は?」と聞いてみる % 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 に関する技術的なご質問がございましたら、お気軽にお聞かせください。
  21. 簡単なシナリオ 1. Windows App を利用し、パブリックサブネットにある EC2 インスタ ンスに RDP 接続をし、接続できることを確認します

    2. セッションマネージャーで接続します 実行コマンド aws ssm start-session --target ${INSTANCE_ID} @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 37 / 81
  22. 簡単なシナリオ 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
  23. 簡単なシナリオ 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
  24. 簡単なシナリオ 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
  25. 簡単なシナリオ 6. Windows App を利用し、パブリックサブネットにある EC2 インスタ ンスに RDP 接続できなくなっていることを確認します

    7. Amazon Q Developer for CLI を用いて、調査や修復を試みます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 41 / 81
  26. 良さそうに見える…、が… 自然言語での対話で調査ができている ルールの定義通り AWS SAW ランブックを活用した調査をしている 話の流れで、結局しれっと直してしまっている If リソースの不具合の原因が特定できた場合, you

    shall not 無許可 での修復およびその試行 これがないがしろにされているかもしれない もしかしたら 安易に "t" を押して trusted となったかも しれない 一連の流れを動画としても保存しています。詳細は こちら から @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 53 / 81
  27. わかったこと 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
  28. そもそもカスタムエージェントとは? 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
  29. カスタムエージェントでできること ツールを事前承認 : プロンプトなしで実行できるツールを定義 可能 ツールアクセスの制限する : 利用可能なツールを制限して複雑 さを回避 関連するコンテキストの定義

    : プロジェクトファイル、ドキュ メント、またはシステム情報を自動的に読み込み ツールの動作を定義・構成 : ツールの動作方法に関する特定の パラメータを設定 62 / 81
  30. カスタムエージェントの構成要素 /agent schema で取得可能なスキーマから properties として定義され ているメタデータ名とその description の意訳です メタデータ

    名 説明 name エージェント名 description 主にユーザーがエージェントを区別するための説明文 prompt エージェントに高レベルのコンテキストを提供するための設定 mcpServers MCP サーバーの構成 tools エージェントが認識できるツールのリスト。MCP サーバーのツールを指定 するには、 @{MCP_SERVER_NAME}/tool_name を使用します。サーバー上のすべ てのツールを含めるには、 @{MCP_SERVER_NAME} を使用します
  31. カスタムエージェントの構成要素〜つづき〜 メタデータ名 説明 toolAliases ツール名を再マッピングするための設定 allowedTools エージェントが明示的に使用を許可されているツールのリスト resources エージェントのコンテキストに含めるファイル hooks

    チャットセッションの作成時に実行するコマンド toolsSettings 特定のツールの設定 useLegacyMcpJson エージェントにレガシーの ~/.aws/amazonq/mcp.json を含めるかど うか model このエージェントで使用するモデルID(指定がない場合はデフォル トモデルが利用される)
  32. ここまでをカスタムエージェント化してみる /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
  33. /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
  34. 手で書くのは大変そう /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'...
  35. /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
  36. 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
  37. ただし 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
  38. 良さそう、でもやはり銀の弾丸ではなさそう context や resource として読み込むファイルにやってほしいこと、や ってほしくないことを明記すれば、それらしく振る舞ってはくれそう カスタムエージェントの toolsSettings で、絶対にやってほしくない AWS

    サービスを定義しておけば最悪の事態は避けられそう ただ、それ以前に Amazon Q Developer for CLI が実行できる ローカ ル環境が、どのような IAM エンティティを内包しているのか 意識する 必要がありそうです 設定されている IAM エンティティは、どの AWS アカウントにアク セスするのか、その時どの IAM 権限を持っているのか @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 72 / 81
  39. 調査で留めるか、修復までするか 例えば、ローカルに aws configure で複数の profile を持たせておく ことはできそうです --profile ReadOnlyAccess-123456789012

    と --profile PowerUserAccess-123456789012 のように複数持っておく 調査段階では ReadOnlyAccess 側を明示的に指定し、利用を行う 原因究明できたら、明示的に PowerUserAccess を指定して修復 を試みる もちろん、人手で実施するという判断にするのもあり @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 73 / 81
  40. 調査で留めるか、修復までするか あるいは、Amazon Q Developer のセッション(やり取りの内容)を 保存しておいて、ターミナルのセッションを分ける案もあるかもしれま せん /save あるいは /save

    [name-for-session] として保存ができます /load を実行することで対話の継続ができます @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 74 / 81
  41. ただし 今回紹介したランブック AWSSupport-TroubleshootRDP は以下のよ うな挙動です 調査時 : CheckAll として ssm:StartAutomationExecution

    を実施 修復時 : FixAll として ssm:StartAutomationExecution を実施 調査も修復も同じ AWS API を呼び出しているので、調査だけでも ssm:StartAutomationExecution を実行できる必要がある そのため調査の延長線でそのまま FixAll として ssm:StartAutomationExecution を実行しようとする操作を AI がやって いないかを注視する必要がある @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 75 / 81
  42. まとめ context に役割ややってほしいこと、やってほしくないことを記載して おくことで、それらしい振る舞いはしてくれる AWS が提供する MCP サーバーやドキュメントを組み合わせて利用す るように仕向ければ、効率的な調査は可能 カスタムエージェントの

    toolsSettings で AWS API の実行を禁止する ガードレールは設置できる ただし本質的には実行環境が、どの IAM エンティティで API を実行す るのかの意識が必要 Security is job zero @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 76 / 81
  43. おまけ ただし本質的には実行環境が、どの IAM エンテ ィティで API を実行するのかの意識が必要 この部分を Security-JAWS でも話してみたい

    と思います 11月8日 に AWSJ 目黒 & オンラインのハイ ブリッド開催 お時間合えばぜひ @kazzpapa3 / #jawsfesta2025 #jawsfesta2025_e #jawsug 77 / 81
  44. 参考資料 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
  45. 登場した資料など 登壇者作成のコンテンツ Create Inquiry via Bedrock / 生成 AI で問い合わせ品質は変わるの

    か?思いついてぱっと作ったものを供養してみる - Speaker Deck AWS SAW(AWS Support Automation Workflows)というソリュ ーションを知ったのでまとめてみた - サーバーワークスエンジニアブ ログ 81 / 81