はじめに
Amazon Bedrock AgentCore上で実行するRuntimeから、Agent Toolkit for AWSのSkillsを呼び出して実行できるようにしました。数えると、実に50種類にも及びます。
まずAgent Toolkit for AWSのskills/配下にあるAWS全般のSkillsを同梱し、さらにAIエージェント関連の能力を補うためにaws-agents pluginのSkillsも追加しています。
本記事では、Agent Toolkit for AWSの概要、MCP ServerとSkillsの使い分け、CodeZip方式で直接デプロイするAgentCore Runtimeからの実行方法を説明します。
背景
Amazon Bedrock AgentCoreとStrands Agentsを活用して、独自のTechAdvisorと呼ばれるAIエージェントを開発し、本番稼働しています。期待役割は、AWSに強みを持ち、IT業界やエンタープライズ技術を分析するためのAIエージェントです。調査が主な目的となるため、Anthropic Claude Sonnet 4.6を使用しています。このAIエージェントをAgentCore Runtimeとしてデプロイし、AWS、クラウド、セキュリティ、AI、開発基盤などの技術トピックについて、調査と分析を行う用途で利用しています。
このAIエージェントに対して、AWS上での設計、運用、セキュリティ、コスト、AI利用に関する手順や判断基準を追加したいと考えました。
特にAWSはサービス数が多く、設定項目やベストプラクティスも頻繁に更新されます。一般的なLLMの知識だけに依存すると、古い手順や不完全な判断基準に基づいた回答になるおそれがあります。
そこで検討したのが、AWSが公開しているAgent Toolkit for AWSです。
Agent Toolkit for AWSとは
Agent Toolkit for AWSは、AIエージェントAWSを扱う際に必要となる手順、ツール接続、利用ルールをまとめたAWS公式のツールキットで、2026年5月6日に正式リリースのアナウンスが公式ブログで発表されました。
現在、コーディング用途を始めとした開発者向けのAIエージェントは、コード生成や設定ファイルの編集だけでなく、AWSリソースの設計、デプロイ、ログ確認、トラブルシューティングに使用されています。一方で、AWSを安全に扱うには、最新のサービス仕様、IAM、監査、実行権限、運用ルールを踏まえる必要があります。
Agent Toolkit for AWSは、この課題に対して、AWS公式の手順と実行手段をAIエージェントから使えるようにするツール群です。主な構成要素は次の通りです。
| 構成要素 | 役割 |
|---|---|
| AWS MCP Server | AWSドキュメント検索、AWS API呼び出し、スクリプト実行などをMCP経由で使えるようにします |
| Skills | 特定のAWSタスクに対する手順、判断基準、注意点をまとめたSKILL.mdベースの手順書セットです |
| Plugins | Claude CodeやCodexなどの対応エージェント向けに、MCP設定とSkillsをまとめて導入するためのパッケージです |
| Rules files | プロジェクト単位で、AIエージェントに守らせたいAWS利用方針や作業ルールを定義するためのファイルです |
これらのツール群全てを使うことも可能ですが、今回はStrands AgentsからSkillsを使えるようにすることを目的としました。
Skillsは、特定の作業領域ごとに用意された手順書です。各SkillはSKILL.mdを中心に構成され、必要に応じてreferences/やscripts/が同梱されています。
Skillsは、全ての内容を常にプロンプトに反映しないため、従来のシステムプロンプトに全ての指示を列挙する方法に比べて、プロンプトによるコンテキストの圧迫を起こしにくくなる優位性があります。今回のAgent Toolkitの使用にあたり、AWS公式ドキュメントでの解説を引用すると、AIエージェントはまず各Skillの説明を読んで現在のタスクに関連するかを判断し、関連する場合にSKILL.mdの全文を読み込み、必要に応じてreference filesを参照し、作業完了後にSkillの内容をコンテキストから解放すると説明されています。この考え方は、同ドキュメントでprogressive disclosure approachと呼ばれています。
Progressive disclosure approachは、日本語では「段階的な情報開示」と表現するのが分かりやすいです。Skillsによって、最初からすべての手順や参考資料をAIエージェントに読ませるのではなく、まず目次に相当するSkill名と説明だけを見せ、必要になった時点で本文や参考資料を追加で読むという動作が期待できるようになります。
Strands AgentsのAgentSkills pluginも同じ考え方に沿っています。Strandsの公式ドキュメントでは、Skill名と説明をsystem promptに追加し、AgentがSkillを選んだときに詳細なinstructionsを読み込むと説明されています。
これにより、多数のSkillsを用意しても、本文全体を常時コンテキストに載せず、指示に応じて使い分けることができます。
今回の方針
Agent Toolkit for AWSのSkillsをTechAdvisor AIエージェントのアプリケーションに同梱し、Strands Agents標準のAgentSkills pluginで読み込む方針にしました。
設計方針としては、まずAWS全般の設計、運用、セキュリティ、コスト、トラブルシューティングを扱うSkillsを同梱します。そのうえで、AIエージェント関連の技術に関する調査需要が高いことと、TechAdvisor自身がAmazon Bedrock AgentCore上で稼働するAIエージェントであることを踏まえ、BedrockやAgentCoreの開発に関する手順をaws-agentsのSkillsで補います。
対象は2種類です。
| ソース | 配置先 | 目的 |
|---|---|---|
skills |
app/TechAdvisor/skills/aws |
Compute、Storage、Database、Security、Operations、Generative AIなどAWS全般のSkills |
plugins/aws-agents/skills |
app/TechAdvisor/skills/aws-agents |
Amazon Bedrock、AgentCore、Gateway、デプロイ、デバッグ、本番化などAIエージェント開発向けのSkills |
ただし、TechAdvisorはAWSの各種サービスを実行・変更する権限を持たない前提です。そのため、SkillsはAWS API操作の代行ではなく、設計、調査、確認項目、トラブルシューティング方針、手順提示のために使います。このような方針はシステムプロンプトに記述しておきます。
なぜSkillsだけを抽出して同梱するのか
Agent Toolkit for AWSのSkillsドキュメントでは、AgentがSkillsを使う方法として、pluginに同梱されたSkillsを使う方法、個別のSkillsをローカルにインストールする方法、AWS MCP Server経由で実行時に検索・取得する方法が説明されています。
また、ドキュメントでは、SkillsはAWS MCP Serverと組み合わせて使うのが最も効果的である一方、AWS MCP Serverには必ずしも依存しておらず、MCPがなくても使えることが説明されています。
今回の実装は、このうち「ローカルにインストールする方法」に近い考え方です。TechAdvisorのリポジトリ内にSkillsを配置し、デプロイパッケージに含めたうえで、StrandsのAgentSkills pluginから読み込みます。
元々、TechAdvisorはコンテナではなく、コードを直接デプロイするCodeZip方式でAgentCore Runtimeに配置しています。そのため、今回はデプロイパッケージにSkillsを同梱する形にしました。
一方で、AWS MCP Serverを使用することで、AWS APIの操作、CloudWatch metrics、CloudTrail audit logging、サンドボックス実行などの機能が使えるようになります。調査にとどまらず、AIエージェントに開発や運用の作業までを任せたい場合は、MCPの使用を検討します。
同梱したSkills
今回、TechAdvisorでは合計50個のSkillsを読み込める状態になりました。
配置は次の通りです。
techadvisor/app/TechAdvisor/
├── main.py
├── skills/
│ ├── aws-agents/
│ │ ├── agents-build/
│ │ ├── agents-connect/
│ │ ├── agents-debug/
│ │ ├── agents-deploy/
│ │ ├── agents-get-started/
│ │ ├── agents-harden/
│ │ └── agents-optimize/
│ └── aws/
│ ├── analytics-skills/
│ │ ├── aws-cleanrooms/
│ │ ├── connecting-to-data-source/
│ │ ├── creating-data-lake-table/
│ │ ├── exploring-data-catalog/
│ │ ├── finding-data-lake-assets/
│ │ ├── ingesting-into-data-lake/
│ │ └── querying-data-lake/
│ ├── application-integration-skills/
│ │ └── aws-messaging-and-streaming/
│ ├── cloud-financial-management-skills/
│ │ └── aws-billing-and-cost-management/
│ ├── compute-skills/
│ │ ├── aws-containers/
│ │ ├── aws-serverless/
│ │ ├── connecting-lambda-to-api-gateway/
│ │ ├── connecting-lambda-to-dynamodb/
│ │ ├── creating-api-gateway-stage/
│ │ ├── creating-ec2-image-builder-pipeline/
│ │ ├── debugging-lambda-timeouts/
│ │ ├── launching-ec2-instance-with-best-practices/
│ │ ├── routing-traffic-with-route53-and-cloudfront/
│ │ └── setting-up-ec2-instance-profiles/
│ ├── database-skills/
│ │ ├── creating-amazon-aurora-db-cluster-with-instances/
│ │ └── exporting-rds-to-s3/
│ ├── developer-tools-skills/
│ │ ├── aws-cdk/
│ │ ├── aws-sdk-js-v3-usage/
│ │ ├── aws-sdk-python-usage/
│ │ └── aws-sdk-swift-usage/
│ ├── frontend-skills/
│ │ └── aws-amplify/
│ ├── generative-ai-skills/
│ │ └── amazon-bedrock/
│ ├── management-tools-skills/
│ │ └── aws-cloudformation/
│ ├── migration-and-modernization-skills/
│ │ └── aws-transform/
│ ├── networking-and-content-delivery-skills/
│ │ ├── configuring-vpc-endpoints-for-private-aws-service-access/
│ │ ├── connecting-vpcs-with-peering/
│ │ ├── creating-production-vpc-multi-az/
│ │ └── enabling-lambda-vpc-internet-access/
│ ├── operations-skills/
│ │ ├── aws-observability/
│ │ ├── setting-up-cloudtrail-multi-region/
│ │ ├── setting-up-cloudwatch-alarm-notifications/
│ │ └── troubleshooting-application-failures/
│ ├── security-and-identity-skills/
│ │ ├── aws-iam/
│ │ └── creating-secrets-using-best-practices/
│ ├── storage-skills/
│ │ ├── securing-s3-buckets/
│ │ ├── storing-and-querying-vectors/
│ │ ├── troubleshooting-efs/
│ │ └── troubleshooting-s3-files/
aws には、Lambda、API Gateway、S3、IAM、CloudWatch、CloudTrail、CloudFormation、Cost Management、Amazon Bedrock、データレイク、ネットワークなど、AWS全般の作業領域に関するSkillsが含まれます。
aws-agents には、AgentCoreやBedrock Agent開発向けのSkillsが含まれます。これはAWS全般のSkillsとは別枠で、TechAdvisorが扱うAIエージェント関連の相談に備えるために追加しています。
Skillsを同期するスクリプト
手作業でコピーすると、更新漏れや取り込み範囲のばらつきが発生しやすくなります。そのため、AWS公式リポジトリから必要なディレクトリを取得する同期スクリプトを用意しました。
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TMP_DIR="$(mktemp -d)"
AWS_AGENTS_DEST_DIR="$ROOT_DIR/app/TechAdvisor/skills/aws-agents"
AWS_SKILLS_DEST_DIR="$ROOT_DIR/app/TechAdvisor/skills/aws"
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
git clone --depth 1 --filter=blob:none --sparse \
https://github.com/aws/agent-toolkit-for-aws.git "$TMP_DIR"
git -C "$TMP_DIR" sparse-checkout set plugins/aws-agents/skills skills
rm -rf "$AWS_AGENTS_DEST_DIR" "$AWS_SKILLS_DEST_DIR"
mkdir -p "$(dirname "$AWS_AGENTS_DEST_DIR")" "$(dirname "$AWS_SKILLS_DEST_DIR")"
cp -R "$TMP_DIR/plugins/aws-agents/skills" "$AWS_AGENTS_DEST_DIR"
cp -R "$TMP_DIR/skills" "$AWS_SKILLS_DEST_DIR"
このスクリプトは、techadvisor/ディレクトリで実行する想定です。また、README.mdから引用して、AIコーディングエージェントにSkillsのソースの在処を認識させ、同期手順を標準化するためにも有効です。
bash scripts/update_aws_agents_skills.sh
実行すると、app/TechAdvisor/skills/aws-agents/とapp/TechAdvisor/skills/aws/がAWS公式リポジトリの内容で更新されます。
Strands Agentへの組み込み
前述の通り、Strands Agentsには、Skillsを扱うための標準プラグインとしてAgentSkillsがあります。AgentSkillsを使用してSkillsを呼び出せるように、ランタイムのコードを変更します。
まずmain.pyに次のimportを追加します。
from pathlib import Path
from strands.vended_plugins.skills import AgentSkills
続いて、同梱したSkillsを読み込むためのコードを書きます。
AWS_AGENTS_SKILLS_DIR = Path(__file__).parent / "skills" / "aws-agents"
AWS_SKILLS_DIR = Path(__file__).parent / "skills" / "aws"
def _get_skill_sources():
skill_sources = []
if AWS_AGENTS_SKILLS_DIR.exists():
skill_sources.append(AWS_AGENTS_SKILLS_DIR)
if AWS_SKILLS_DIR.exists():
skill_sources.extend(sorted(skill_md.parent for skill_md in AWS_SKILLS_DIR.rglob("SKILL.md")))
return skill_sources
agent_skills = AgentSkills(skills=_get_skill_sources())
補足として、今回2箇所のソースからSkillsを同期していますが、これらのディレクトリ構造の違いに注意が必要です。
aws-agentsは、親ディレクトリ直下に各Skillディレクトリが並ぶ構造です。そのため、AgentSkillsには上のコードのAWS_AGENTS_SKILLS_DIRのパス定義のまま渡せば読み込めます。
一方、Agent Toolkit for AWSのskills/配下は、compute-skills/aws-serverless/SKILL.mdのようにカテゴリを挟んだ2階層構造です。この全てを変数定義で書くのは辛いので、ひと工夫しています。StrandsのAgentSkillsは、親ディレクトリ直下のSkillを読む設計であるため、rglob("SKILL.md")でSKILL.mdを持つディレクトリを列挙し、それぞれをソースとして渡しています。
最後に、Agent生成時にpluginsとして渡します。
cache[key] = Agent(
model=load_model(),
session_manager=get_memory_session_manager(session_id, user_id),
system_prompt=DEFAULT_SYSTEM_PROMPT,
tools=tools,
plugins=[agent_skills],
)
これにより、Strands AgentsがSkillsを使用できるようになりました。Agentはまず各Skillの説明を確認し、必要な場合にのみ該当Skillの本文を読み込みます。Agent Toolkit for AWSが説明している段階的な情報開示に沿った動作です。
システムプロンプトへの指示
Skillsは自動的に使えるようになりますが、TechAdvisorでの扱いを明確にするため、システムプロンプトにも指示を追加しました。
For AWS topics involving service selection, architecture, deployment, security, operations, cost, data platforms, AI, Amazon Bedrock, AgentCore, API Gateway, debugging, optimization, or production hardening, use the available skills before giving recommendations.
さらに、TechAdvisorがAWSリソースを直接操作しないことも明記しています。
This agent does not have permission to execute or change AWS services and resources. Use AWS skills for design, research, validation, troubleshooting guidance, and step-by-step procedure drafting only.
When a skill suggests AWS CLI, AWS API, MCP Server, or infrastructure operations, present them as procedures or commands for the user or an authorized operator to run. Do not imply that AWS-side actions were executed unless they were actually performed by an available tool.
この指示により、Skills内にAWS CLIやAWS API操作の手順が含まれていても、その実行を抑制し、ユーザーや権限を持つ担当者が実行する手順として提示するまでに留められます。そもそもとしてmcp-proxy-for-awsを使用しておらず、またSigV4認証の独自実装もないため、APIの実行権限を得ることはできません。
動作確認
今回のSkillsを確認するには、次のような指示が適しています。
社内向けにAmazon Bedrockを使った問い合わせ対応エージェントを構築したいです。
要件は以下です。
- 社内文書はS3に置き、RAGで検索したい
- 利用者向けAPIはAPI GatewayとLambdaで公開したい
- 認証・認可はIAMまたはCognitoを前提に検討したい
- 監査ログと運用監視はCloudWatchとCloudTrailで確認したい
- 本番運用前にセキュリティ、コスト、可用性、障害対応をレビューしたい
今回はAgentCore CLIでagentcore devを実行すると起動できるagent inspectorというテスト用のチャットボット環境を利用します。テスト用と言いながら、普段使いにも使えそうな使い勝手です。
それでは、以下の検証動画をご覧ください。動画は2分半もありますが、Skillsの動作確認だけを見たい方は、最後の30秒をご覧ください。
以下の通り、Skillsを読み込んで結果を表示していることが確認できました。また、回答内容も非常に専門性が高く、次のステップも明確に示されており、開発者にとって技術調査にかかる時間の大幅な短縮が期待できます。
まとめ
Agent Toolkit for AWSは、AWSを扱うAIエージェントに公式の手順や実行手段を渡すための新しいツールキットです。その中でもSkillsは、AWSサービスごとの判断基準や作業手順をSKILL.mdとして扱えるため、Strands Agentsにも組み込みやすい構成になっています。
今回、Agent Toolkit for AWS全体をそのまま実行環境に載せるのではなく、skillsとplugins/aws-agents/skillsをアプリケーションに同梱し、Strands標準のAgentSkillsで読み込む構成にしました。これにより、AWS全般のSkillsに加えて、BedrockやAgentCoreなどAIエージェント開発に関するSkillsも利用できるようになりました。
この方式では、AWS MCP Serverを使わずにSkillsだけを利用しています。そのため、AWS API操作やCloudWatch metricsの取得などは行えません。一方で、CodeZip方式のAgentCore Runtimeでも扱いやすく、外部プロセスの起動に依存せず、AWS公式の手順書をAIエージェントに読み込ませることができます。
今回のTechAdvisorにはAWSリソースを直接操作する権限を持たせないため、Skillsは設計、調査、確認項目の整理、トラブルシューティング方針、作業手順の提示に使います。実行を伴う作業は、ユーザーや権限を持つ担当者が確認して実施する前提です。
まずは50種類のSkillsを設定しましたが、実際の回答内容や利用頻度を見ながら、必要に応じて対象カテゴリを絞り込んでいく予定です。Agent Toolkit for AWSは公開から間もないため、今後の更新にも追従しながら、TechAdvisorの回答品質を継続的に改善していきます。
参考文献
- Agent Toolkit for AWS: https://github.com/aws/agent-toolkit-for-aws
- Agent Toolkit for AWS Skills: https://github.com/aws/agent-toolkit-for-aws/tree/main/skills
- aws-agents plugin: https://github.com/aws/agent-toolkit-for-aws/tree/main/plugins/aws-agents
- Agent Toolkit for AWS User Guide: https://docs.aws.amazon.com/agent-toolkit/latest/userguide/what-is-agent-toolkit.html
- Agent Toolkit for AWS Skills: https://docs.aws.amazon.com/agent-toolkit/latest/userguide/skills.html
- Agent Toolkit for AWS Plugins: https://docs.aws.amazon.com/agent-toolkit/latest/userguide/plugins.html
- Strands Agents Skills Plugin: https://strandsagents.com/docs/user-guide/concepts/plugins/skills/
- Strands Agents: https://strandsagents.com/
