View a markdown version of this page

Kontrak protokol HTTP - Batu Dasar Amazon AgentCore

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 Server-sent acara.

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() atau send_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() dan send_bytes() metode

  • Menerapkan pemrosesan data biner yang sesuai

  • Pertimbangkan batasan ukuran pesan

Siklus hidup koneksi

Pembentukan Koneksi
  1. Jabat tangan HTTP: Klien mengirim permintaan WebSocket peningkatan

  2. Tanggapan Peningkatan: Agen menerima dan mengembalikan 101 Protokol Pengalihan

  3. WebSocket Aktif: Komunikasi dua arah dimulai

  4. Pengikatan Sesi: Mengaitkan koneksi dengan pengenal sesi

Pertukaran Pesan
  1. Loop Ber kelanjutan: Terapkan loop mendengarkan pesan

  2. Pemrosesan Pesan: Menangani pesan masuk secara asinkron

  3. Generasi Respon: Kirim tanggapan yang sesuai

  4. 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: 200 untuk 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 baru

HealthyBusy- 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. status Setel hanya pada perubahan status aktual.

Awas

Jangan time_of_last_update mengatur 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 hingga MaxLifetime dan 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). Ketika otentikasi hilang, layanan mengembalikan respons 401 Tidak Sah dengan WWW-Authenticate header (per RFC 7235), memungkinkan klien menemukan titik akhir server otorisasi melalui API. GetRuntimeProtectedResourceMetadata

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.