Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kontrak protokol HTTP
Memahami persyaratan untuk menerapkan protokol HTTP dalam aplikasi agen Anda. Gunakan protokol HTTP untuk membuat titik akhir REST API langsung untuk request/response pola tradisional dan titik akhir untuk WebSocket koneksi streaming dua arah waktu nyata.
catatan
Titik akhir HTTP WebSocket (/invocations/ws) dan () dapat digunakan pada wadah yang sama menggunakan port 8080, memungkinkan implementasi agen tunggal untuk mendukung interaksi API tradisional dan streaming dua arah waktu nyata.
Misalnya kode, lihat Memulai dengan AgentCore CLI.
Persyaratan kontainer
Agen Anda harus digunakan sebagai aplikasi kontainer yang memenuhi spesifikasi berikut:
-
Tuan rumah:
0.0.0.0 -
Port:
8080- Port standar untuk komunikasi HTTP-based agen -
Platform: wadah ARM64 - Diperlukan untuk kompatibilitas dengan lingkungan AgentCore Runtime
Persyaratan jalur
/pemanggilan - POST
Ini adalah titik akhir interaksi agen utama dengan input dan JSON/SSE output JSON.
Tujuan
Menerima permintaan masuk dari pengguna atau aplikasi dan memprosesnya melalui logika bisnis agen Anda
Kasus penggunaan
T /invocations itik akhir melayani beberapa tujuan utama:
-
Interaksi dan percakapan pengguna langsung
-
Integrasi API dengan sistem eksternal
-
Pemrosesan batch dari beberapa permintaan
-
Real-time respon streaming untuk operasi yang berjalan lama
Contoh format Permintaan
Content-Type: application/json { "prompt": "What's the weather today?" }
Format tanggapan
Agen Anda dapat merespons menggunakan salah satu format berikut tergantung pada kasus penggunaan:
Respon JSON (non-streaming)
Tujuan
Memberikan tanggapan lengkap untuk permintaan yang dapat diproses dengan cepat
Kasus penggunaan
Tanggapan JSON ideal untuk:
-
Skenario jawaban pertanyaan sederhana
-
Komputasi deterministik
-
Pencarian data cepat
-
Konfirmasi status
Contoh format respons JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Respon SSE (streaming)
Server-sent Events (SSE) memungkinkan Anda memberikan respons streaming real-time. Untuk informasi selengkapnya, lihat spesifikasi
Tujuan
Memungkinkan pengiriman respons tambahan untuk operasi yang berjalan lama dan pengalaman pengguna yang lebih baik
Kasus penggunaan
Tanggapan SSE ideal untuk:
-
Real-time pengalaman percakapan
-
Pembuatan konten progresif
-
Long-running perhitungan dengan hasil menengah
-
Umpan data langsung dan pembaruan
Contoh format respons SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws - WebSocket (Opsional)
Ini adalah titik akhir WebSocket koneksi utama untuk komunikasi dua arah waktu nyata.
Tujuan
M WebSocket enerima permintaan peningkatan dan mempertahankan koneksi persisten untuk interaksi agen streaming
Kasus penggunaan
T /ws itik akhir melayani beberapa tujuan utama:
-
Real-time antarmuka percakapan
-
Sesi agen interaktif dengan umpan balik langsung
-
Pemrosesan data streaming dengan komunikasi dua arah
Pembentukan koneksi
WebSocket koneksi dimulai dengan permintaan peningkatan HTTP:
Contoh Permintaan Upgrade HTTP
GET /ws HTTP/1.1 Host: agent-endpoint Connection: Upgrade Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: session-uuid
Contoh Resp WebSocket ons Upgrade
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Persyaratan penanganan pesan
Titik WebSocket akhir Anda harus menangani:
-
Penerimaan koneksi: Panggilan
await websocket.accept()untuk membuat koneksi -
Penerimaan pesan: Mendukung jenis pesan teks atau biner berdasarkan kebutuhan aplikasi Anda
-
Pemrosesan pesan: Menangani pesan masuk sesuai dengan logika bisnis agen Anda
-
Pengiriman respons: Kirim tanggapan yang sesuai menggunakan
send_text()atausend_bytes() -
Siklus hidup koneksi: Mengelola pembuatan, pemeliharaan, dan penghentian koneksi
Format pesan
Pesan Teks
Format JSON (Direkomendasikan)
Tujuan
Pertukaran data terstruktur untuk interaksi agen
Contoh pesan
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Contoh tanggapan
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Format Teks Biasa
Tujuan
Komunikasi berbasis teks sederhana
Contoh
Hello, can you help me with this question?
Pesan Biner
Tujuan
Dukungan untuk data non-teks seperti gambar, audio, atau format biner lainnya
Kasus penggunaan
Pesan biner mendukung beberapa skenario:
-
Multi-modal interaksi agen
-
Unggahan dan unduhan file
-
Transmisi data terkompresi
-
Data protokol biner
Persyaratan penanganan
Penanganan pesan biner membutuhkan:
-
Penggunaan
receive_bytes()dansend_bytes()metode -
Menerapkan pemrosesan data biner yang sesuai
-
Pertimbangkan batasan ukuran pesan
Siklus hidup koneksi
Pembentukan Koneksi
-
Jabat tangan HTTP: Klien mengirim permintaan WebSocket peningkatan
-
Tanggapan Peningkatan: Agen menerima dan mengembalikan 101 Protokol Pengalihan
-
WebSocket Aktif: Komunikasi dua arah dimulai
-
Pengikatan Sesi: Mengaitkan koneksi dengan pengenal sesi
Pertukaran Pesan
-
Loop Ber kelanjutan: Terapkan loop mendengarkan pesan
-
Pemrosesan Pesan: Menangani pesan masuk secara asinkron
-
Generasi Respon: Kirim tanggapan yang sesuai
-
Penanganan Kes alahan: Kelola pengecualian dan masalah koneksi
/ping - DAPATKAN
Tujuan
Memverifikasi bahwa agen Anda beroperasi dan siap menangani permintaan
Kasus penggunaan
T /ping itik akhir melayani beberapa tujuan utama:
-
Pemantauan layanan untuk mendeteksi dan memperbaiki masalah
-
Pemulihan otomatis melalui infrastruktur AWS terkelola
Format tanggapan
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
Jika agen Anda perlu memproses tugas latar belakang, Anda dapat menunjukkannya dengan /ping status. Jika status ping adalahHealthyBusy, sesi runtime dianggap aktif.
Contoh format respons Ping
{ "status": "<status_value>" }
- status (wajib)
-
Healthy- Sistem siap menerima pekerjaan baruHealthyBusy- Sistem beroperasi tetapi saat ini sibuk dengan tugas asinkron. Sementara statusnyaHealthyBusy, sesi runtime dianggap aktif dan tetap hidup. - time_of_last_update (opsional)
-
Stempel waktu Unix (dalam detik) saat terakhir diubah.
statusSetel hanya pada perubahan status aktual.Awas
Jangan
time_of_last_updatemengatur waktu saat ini pada setiap ping. Stempel waktu yang maju pada setiap ping menandakan perubahan status terus menerus, yang mencegah batas waktu sesi idle agar tidak pernah diaktifkan — sesi kemudian bertahan hinggaMaxLifetimedan dapat menghabiskan kuota sesi Anda. Jika Anda menghilangkan bidang tersebut, platform melacak perubahan status dengan sendirinya. Jika Anda menggunakan Bedrock AgentCore SDK, respons ping ditangani untuk Anda.
Penanganan kesalahan
Tidak seperti A2A, MCP, dan AG-UI protokol, protokol HTTP tidak membungkus kesalahan dalam amplop khusus protokol. Layanan mengembalikan kesalahan secara langsung sebagai respons HTTP asli: kode status HTTP mencerminkan pengecualian, dan header x-amzn-ErrorType respons membawa nama pengecualian. Tabel berikut mencantumkan pengecualian yang dapat Anda terima.
| Kode Kesalahan HTTP | Pengecualian Runtime (x-amzn-ErrorType) |
Deskripsi |
|---|---|---|
|
400 |
ValidationException |
Data atau parameter permintaan tidak valid |
|
401 |
UnauthorizedException |
Diperlukan otentikasi atau kredentif tidak valid (OAuth-configured agen) |
|
402 |
ServiceQuotaExceededException |
Permintaan akan melebihi kuota layanan |
|
403 |
AccessDeniedException |
Izin tidak mencukupi untuk operasi yang diminta |
|
404 |
ResourceNotFoundException |
Sumber daya yang diminta tidak ada |
|
409 |
ConflictException |
Konflik sumber daya - Sumber daya sudah ada |
|
409 |
RetryableConflictException |
Operasi sesi sedang berlangsung, silakan coba lagi |
|
424 |
RuntimeClientError |
Wadah agen Anda mengembalikan kesalahan 4xx atau 5xx - periksa log Anda CloudWatch |
|
429 |
ThrottlingException |
Terlalu banyak permintaan - batas tarif permintaan terlampaui |
|
500 |
InternalServerException |
Terjadi kesalahan tak terduga saat memproses permintaan |
ConflictExceptiondan RetryableConflictException keduanya mengembalikan HTTP 409. x-amzn-ErrorTypeHeader dan pesan membedakannya. Layanan mengembalikan RetryableConflictException (Session operation in progress, please retry) ketika operasi kedua menargetkan sesi yang disediakan atau dihancurkan oleh layanan. Kondisi ini bersifat sementara dan dapat dicoba kembali. Coba lagi dengan mundur eksponensial pendek. SDK AWS mencoba ulang pengecualian ini secara otomatis saat percobaan ulang default diaktifkan. Jika Anda memanggil API secara langsung tanpa AWS SDK, Anda harus mencobanya lagi sendiri.
catatan
ServiceQuotaExceededExceptionmengembalikan HTTP 402 pada permukaan HTTP asli ini. Pada protokol A2A ia mengembalikan HTTP 429, status HTTP yang sama dengan throttling. Pada protokol MCP ia berbagi kode JSON-RPC kesalahan throttling (-32003) tetapi mengembalikan HTTP 200. Di AG-UI atasnya menggunakan kode SERVICE_QUOTA_EXCEEDED SSE yang berbeda dan mengembalikan HTTP 429.
Tanggapan otentikasi OAuth
OAuth-configured agen mengikuti standar otentikasi RFC 6749 (OAuth 2.0).
401 Tidak sah
Dikembalikan ketika header Otorisasi hilang.
Termasuk WWW-Authenticate header:
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.