Kontrak protokol A2A
Kontrak protokol A2A mendefinisikan persyaratan untuk menerapkan komunikasi agen-ke-agen di Amazon Bedrock Runtime. AgentCore Kontrak ini menentukan persyaratan teknis, titik akhir, dan pola komunikasi yang harus diterapkan oleh server A2A Anda.
Misalnya kode, lihat Menerapkan server A2A di Runtime. AgentCore
Topik
Persyaratan implementasi protokol
Server A2A Anda harus menerapkan persyaratan protokol khusus ini:
-
Transport: JSON-RPC 2.0
melalui HTTP - Mengaktifkan komunikasi agen-ke-agen standar -
Manajemen Sesi: Platform secara otomatis menambahkan
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idheader untuk isolasi sesi -
Penemuan Agen: Harus menyediakan Kartu Agen di titik
/.well-known/agent-card.jsonakhir
Persyaratan kontainer
Server A2A Anda harus digunakan sebagai aplikasi kontainer yang memenuhi spesifikasi berikut:
-
Tuan rumah:
0.0.0.0 -
Port:
9000- Port standar untuk komunikasi server A2A (berbeda dari protokol HTTP dan MCP) -
Platform: Kontainer ARM64 - Diperlukan untuk kompatibilitas dengan lingkungan AWS runtime Amazon Bedrock AgentCore
Persyaratan jalur
/- POSTING
Tujuan
Menerima JSON-RPC 2.0 pesan dan memprosesnya melalui kemampuan agen Anda, menyelesaikan pass-through muatan InvokeAgentRuntimeAPI dengan pesan protokol A2A
Kasus penggunaan
Titik akhir root melayani beberapa tujuan utama:
-
Agent-to-agent komunikasi dan kolaborasi
-
Multi-step alur kerja agen dan delegasi tugas
-
Real-time pengalaman percakapan antar agen
-
Pemanggilan alat dan berbagi kemampuan
Format permintaan
Server A2A mengharapkan JSON-RPC 2.0 permintaan yang diformat:
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" } } }
Format respons
Server A2A merespons dengan respons berformat JSON-RPC 2.0 yang berisi tugas dan artefak:
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- -card.json - DAPATKAN known/agent
Tujuan
Menyediakan metadata Kartu Agen untuk penemuan agen dan kemampuan iklan
Kasus penggunaan
Endpoint Kartu Agen melayani beberapa tujuan utama:
-
Penemuan agen dalam sistem multi-agen
-
Kemampuan dan keterampilan iklan
-
Spesifikasi persyaratan otentikasi
-
Konfigurasi titik akhir layanan
Format respons
Mengembalikan metadata JSON yang menjelaskan identitas dan kemampuan agen:
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 - DAPATKAN
Tujuan
Memverifikasi bahwa server A2A Anda beroperasi dan siap menangani permintaan
Format respons
Mengembalikan kode status yang menunjukkan kesehatan agen Anda:
-
Content-Type :
application/json -
Kode Status HTTP:
200untuk kode kesalahan yang sehat dan sesuai untuk keadaan tidak sehat
{ "status": "Healthy" }
statusdiperlukan dan merupakan salah satu dari Healthy atauHealthyBusy. Sementara statusnyaHealthyBusy, sesi runtime tetap hidup.
time_of_last_updateBidang opsional (stempel waktu Unix dalam hitungan detik) dapat disertakan untuk melaporkan ketika yang terakhir diubah. status
Awas
Jangan atur time_of_last_update ke waktu saat ini pada setiap ping. Stempel waktu yang maju pada setiap ping menandakan perubahan status berkelanjutan, yang mencegah batas waktu sesi idle tidak pernah diaktifkan — sesi kemudian bertahan hingga MaxLifetime dan dapat menghabiskan kuota sesi Anda. Jika Anda menghilangkan bidang, platform melacak perubahan statusnya sendiri. Jika Anda menggunakan Bedrock AgentCore SDK, respons ping ditangani untuk Anda.
Persyaratan otentikasi
Server A2A mendukung beberapa mekanisme otentikasi:
Token Pembawa OAuth 2.0
Untuk otentikasi klien A2A, sertakan token Bearer di header permintaan:
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
SiGv4 Otentikasi
Otentikasi AWS SiGv4 standar juga didukung untuk akses terprogram.
Penanganan kesalahan
Server A2A mengembalikan kesalahan sebagai respons kesalahan standar JSON-RPC 2.0 dengan kode status HTTP 200 untuk mempertahankan kepatuhan protokol:
| JSON-RPC Kode Kesalahan | Pengecualian Runtime | Kode Kesalahan HTTP | JSON-RPC Pesan Kesalahan |
|---|---|---|---|
|
-32501 |
ResourceNotFoundException |
404 |
Sumber daya tidak ditemukan - Sumber daya yang diminta tidak ada |
|
-32052 |
ValidationException |
400 |
Kesalahan validasi - Data permintaan tidak valid |
|
-32053 |
ThrottlingException |
429 |
Batas tarif terlampaui - Terlalu banyak permintaan |
|
-32054 |
ResourceConflictException |
409 |
Konflik sumber daya - Sumber daya sudah ada |
|
-32055 |
RuntimeClientError |
424 |
Kesalahan klien runtime - Silakan periksa CloudWatch log Anda untuk informasi lebih lanjut |
Contoh respon kesalahan:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32052, "message": "Validation error - Invalid request data" } }
Tanggapan Otentikasi OAuth
OAuth-configured agen mengikuti standar otentikasi RFC 6749 (OAuth 2.0
401 Tidak Sah - Otentikasi Hilang
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}"
catatan
SigV4-configured agen mengembalikan HTTP 403 dengan ACCESS_DENIED kesalahan dan tidak menyertakan WWW-Authenticate header.