Serverless Operations, inc

>_cd /blog/id_g_ovyb3qdf

title

Amazon Bedrock AgentCore がA2Aをサポートしたのでやってみた

前日AWSからAmazon Bedrock AgentCore RuntimeがA2A (Agent to Agent) プロトコルをサポートした、というアナウンスがありました。

ブログ

https://aws.amazon.com/jp/blogs/machine-learning/introducing-agent-to-agent-protocol-support-in-amazon-bedrock-agentcore-runtime/

ドキュメント

https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-a2a.html

今日はブログの内容をやってみたいと思います。

A2A (Agent to Agent ) プロトコル

A2Aプロトコルは、Googleが2025年4月に発表した、複数のAIエージェント間の協調を可能にする標準プロトコルです。

AIエージェント技術の進化によって、「単一の大規模モデルが全てを担う」時代から、「複数の専門エージェントが協調して課題を解く」時代へと移行しつつあります。MCPなどを活用することで複数ベンダーから提供されることなるエージェントを連携させる時に課題となるのが「異なるエージェント間をどのように接続し、連携させるか」という点です。
A2A(Agent-to-Agent)プロトコルは、まさにこの課題を解決するために設計された、エージェント間通信の共通仕様です。

A2A の基本構造

A2Aプロトコルは、MCPと同じようにJSON-RPC 2.0を基盤として、HTTPS上で動作するように設計されています。
基本的なやり取りは以下の二つのエンドポイントで行われます:

エンドポイント

役割

GET /.well-known/agent-card.json

エージェントのメタ情報を提供(自己紹介・能力宣言)

POST /invocations

他のエージェントからタスクを受け取り、結果を返す

エージェントは、自身の能力を記述したAgent Cardを公開します。このAgent Cardは、標準的な場所(/.well-known/agent-card.json)でHTTP GETリクエストにより取得できます。他のエージェントは、このAgent Cardを読むことで、対象エージェントが何をできるのかを理解します。

これらにより、エージェントは以下の2段階で協調します:

  1. Discover(発見):他のエージェントの「Agent Card」を取得し、その機能やスキルを理解する
  2. Invoke(呼び出し):適切なエージェントにタスクを委譲し、結果(Artifact)を受け取る

■ Agent Card(エージェントカード)

A2Aプロトコルの中核にあるのが「Agent Card」です。
これはエージェント自身が公開するJSON形式の自己定義ファイルで、そのエージェントが何をできるのかを他者が理解するためのメタデータです。

{
  "agentId": "weather-analyzer",
  "name": "Weather Analyzer Agent",
  "description": "Provides real-time weather analysis using LLM reasoning.",
  "capabilities": [
    {
      "name": "analyzeWeather",
      "input": { "type": "location" },
      "output": { "type": "forecast" }
    }
  ],
  "endpoints": {
    "invocations": "/invocations"
  }
}

これにより、他のエージェントはコードを読むことなく「このエージェントは何を入力に取り、何を出力するのか」を自動的に理解できます。
Amazon Bedrock AgentCore Runtime では、.well-known/agent-card.json パスでこのファイルを自動ホスティングする仕組みを提供しています。

認証

A2Aではセキュリティも明示的に設計されています。標準プロトコルは、OpenAPI仕様と同等の認証スキームをサポートします:

•        Bearer トークン(OAuth 2.0、JWT)

•        APIキー

•        OpenID Connect Discovery

すべての本番環境でのやり取りはHTTPSで暗号化されます。

Amazon Bedrock AgentCore Runtimeは、A2Aプロトコルを実装したエージェント実行環境の一つ、という位置づけです。

この実装では、以下の特徴があります:

•        AWS SigV4署名(IAMベース)およびOAuth2.0/JWTをサポート

•        エージェントはポート9000でルートパス(/)にJSON-RPCリクエストを受信

•        各呼び出しに一意の X-Amzn-Bedrock-AgentCore-Runtime-Session-Id を付与し、セッション単位の追跡を実現

•        Agent Cardは https://bedrock-agentcore.region.amazonaws.com/runtimes/{agent-arn}/invocations/.well-known/agent-card.json で提供される

さっそくやってみる

ではこのブログの内容をやってみます。
https://aws.amazon.com/jp/blogs/machine-learning/introducing-agent-to-agent-protocol-support-in-amazon-bedrock-agentcore-runtime/

このサンプルでは3つのAgentがA2Aで協調します。全体をつかさどるホストエージェント、AWSのログを検査するモニタリングエージェント、ウェブの検索を行うウエブエージェント、です。

1. AWS credentialの準備

ますはIAMユーザーを発行し aws configureでクレデンシャルをセットします。リージョンはus-west-2にします。

ブログで提供されているサンプルはかなり広範囲でAWSサービスを操作しますのでPowerUserを使うのがよさそうです。

2. 必要APIキーの準備

以下3つのAPIキーをあらかじめ取得してコピーしておきます。

3. サンプルのデプロイ

git clone https://github.com/awslabs/amazon-bedrock-agentcore-samples.git 
cd amazon-bedrock-agentcore-samples
cd 02-use-cases/A2A-multi-agent-incident-response

uv run deploy.py

様々な入力項目が求められますが、すべてデフォルトで進められます。だいたい15分程度でデプロイが完了し3つのエージェントが起動します。

過去ブログでもまとめたMemoryも作成されています。

https://serverless.co.jp/blog/vty5c3icl/

これは各Agentが実行結果を一時保存するように使われています。

4. ウェブアプリの起動

ではAgentと対話を行うためのウェブアプリを起動します。

cd frontend 
npm install 
chmod +x ./setup-env.sh 
./setup-env.sh 

npm run dev

> a2a-agentcore-runtime@1.0.0 dev
> vite --port 5173


  VITE v7.2.2  ready in 209 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: http://10.255.255.254:5173/
  ➜  Network: http://172.22.141.252:5173/
  ➜  press h + enter to show help

起動したらローカル用URLにブラウザでアクセスします。

CloudWatchのログに関する質問を行うとこのようにAgent間で呼び出しが行われていることがわかります。

検索が完了するとその結果がホストエージェントに引き渡され以下の様に表示されます。

Written by
編集部

亀田 治伸

Kameda Harunobu

  • Facebook->
  • X->
  • GitHub->

Share

Facebook->X->
Back
to list
<-