A2A プロトコル契約
A2A プロトコル契約は、Amazon Bedrock AgentCore ランタイムでagent-to-agent通信を実装するための要件を定義します。この契約は、A2A サーバーが実装する必要がある技術要件、エンドポイント、および通信パターンを指定します。
コード例については、AgentCore ランタイムで A2A サーバーをデプロイする」を参照してください。
プロトコル実装要件
A2A サーバーは、以下の特定のプロトコル要件を実装する必要があります。
-
トランスポート: HTTP 経由の JSON-RPC 2.0
- 標準化されたagent-to-agent通信を有効にする -
セッション管理: プラットフォームはセッション分離の
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idヘッダーを自動的に追加します -
エージェント検出:
/.well-known/agent-card.jsonエンドポイントでエージェントカードを指定する必要があります
コンテナの要件
A2A サーバーは、以下の仕様を満たすコンテナ化されたアプリケーションとしてデプロイする必要があります。
-
ホスト:
0.0.0.0 -
ポート :
9000- A2A サーバー通信用の標準ポート (HTTP および MCP プロトコルとは異なります) -
プラットフォーム : ARM64 コンテナ - AWS Amazon Bedrock AgentCore ランタイム環境との互換性に必要です
パスの要件
/ - POST
目的
JSON-RPC 2.0 メッセージを受信し、エージェントの機能を通じて処理し、A2A プロトコルメッセージを含む InvokeAgentRuntime API ペイロードの完全なパススルー
ユースケース
ルートエンドポイントには、いくつかの重要な目的があります。
-
Agent-to-agent通信とコラボレーション
-
マルチステップのエージェントワークフローとタスクの委任
-
エージェント間のリアルタイムの会話エクスペリエンス
-
ツールの呼び出しと機能共有
リクエストの形式
A2A サーバーは、JSON-RPC 2.0 形式のリクエストを想定しています。
Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "kind": "text", "text": "Your message content here" } ], "messageId": "unique-message-id" } } }
レスポンスの形式
A2A サーバーは、タスクとアーティファクトを含む JSON-RPC 2.0 形式のレスポンスで応答します。
Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "result": { "artifacts": [ { "artifactId": "unique-artifact-id", "name": "agent_response", "parts": [ { "kind": "text", "text": "Agent response content" } ] } ] } }
/.well-known/agent-card.json - GET
目的
エージェント検出と機能アドバタイズのためのエージェントカードメタデータを提供します
ユースケース
エージェントカードエンドポイントには、いくつかの重要な目的があります。
-
マルチエージェントシステムでのエージェント検出
-
機能とスキルのアドバタイズ
-
認証要件の仕様
-
サービスエンドポイントの設定
レスポンスの形式
エージェントの ID と機能を説明する JSON メタデータを返します。
Content-Type: application/json { "name": "Agent Name", "description": "Agent description and purpose", "version": "1.0.0", "url": "https://bedrock-agentcore.region.amazonaws.com/runtimes/agent-arn/invocations/", "protocolVersion": "0.3.0", "preferredTransport": "JSONRPC", "capabilities": { "streaming": true }, "defaultInputModes": ["text"], "defaultOutputModes": ["text"], "skills": [ { "id": "skill-id", "name": "Skill Name", "description": "Skill description and capabilities", "tags": [] } ] }
/ping - GET
目的
A2A サーバーが動作しており、リクエストを処理する準備ができていることを確認します
レスポンスの形式
エージェントの状態を示すステータスコードを返します。
-
Content-Type:
application/json -
HTTP ステータスコード: 異常状態の正常で適切なエラーコード
200の場合
{ "status": "Healthy" }
status は必須であり、 Healthy または のいずれかですHealthyBusy。ステータスが の間HealthyBusy、ランタイムセッションは維持されます。
オプションtime_of_last_updateフィールド (Unix タイムスタンプを秒単位で指定) を含めて、status最後に変更された日時をレポートできます。
警告
すべての ping で現在の時刻time_of_last_updateに設定しないでください。すべての ping で進行するタイムスタンプは、継続的なステータス変更を示します。これにより、アイドル状態のセッションタイムアウトが発砲されるのを防ぐことができます。その後、セッションは まで保持MaxLifetimeされ、セッションクォータが枯渇する可能性があります。フィールドを省略すると、プラットフォームはステータスの変更を単独で追跡します。Bedrock AgentCore SDK を使用すると、ping レスポンスが自動的に処理されます。
認証要件
A2A サーバーは、複数の認証メカニズムをサポートしています。
OAuth 2.0 ベアラートークン
A2A クライアント認証の場合は、リクエストヘッダーにベアラートークンを含めます。
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
SigV4 認証
Standard AWS SigV4 認証は、プログラムによるアクセスでもサポートされています。
エラー処理
A2A サーバーは、プロトコルコンプライアンスを維持するために、HTTP 200 ステータスコードを持つ標準の JSON-RPC 2.0 エラーレスポンスとしてエラーを返します。
| JSON-RPC エラーコード | ランタイム例外 | HTTP エラーコード | JSON-RPC エラーメッセージ |
|---|---|---|---|
|
-32501 |
ResourceNotFoundException |
404 |
リソースが見つかりません - リクエストされたリソースは存在しません |
|
-32052 |
ValidationException |
400 |
検証エラー - 無効なリクエストデータ |
|
-32053 |
ThrottlingException |
429 |
レート制限を超えました - リクエストが多すぎます |
|
-32054 |
ResourceConflictException |
409 |
リソースの競合 - リソースが既に存在します |
|
-32055 |
RuntimeClientError |
424 |
ランタイムクライアントエラー - 詳細については、CloudWatch ログを確認してください |
エラー応答のサンプル:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32052, "message": "Validation error - Invalid request data" } }
OAuth 認証レスポンス
OAuth 設定のエージェントは、RFC 6749 (OAuth 2.0)
401 未承認 - 認証がありません
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
注記
SigV4-configuredのエージェントはACCESS_DENIEDエラーで HTTP 403 を返し、WWW-Authenticateヘッダーは含まれません。