Sesi lengket untuk aturan tertimbang
Bila Anda menggunakan aturan tertimbang untuk A/B pengujian atau penerapan canary, Anda ingin setiap sesi menerima pengalaman yang konsisten di beberapa permintaan. Tanpa lengket sesi, sesi dapat menerima bundel konfigurasi yang berbeda atau rute ke target yang berbeda pada setiap permintaan. Perutean ke target yang berbeda berarti runtime agen baru tanpa konteks dari permintaan sebelumnya, yang merusak pengalaman pengguna.
Untuk mengatasi ini, gateway mendukung kelengketan sesi. Saat Anda menyertakan ID sesi dalam permintaan Anda, gateway menyimpan keputusan perutean dari permintaan pertama dan menggunakannya kembali untuk semua permintaan berikutnya dalam sesi yang sama.
Cara kerja lengket sesi
Gateway mengidentifikasi sesi dengan mengekstrak ID sesi dari setiap permintaan. Aliran lengket bekerja sebagai berikut:
-
Pada permintaan pertama dengan ID sesi, gateway memilih varian berdasarkan bobot yang dikonfigurasi dan menyimpan keputusan.
-
Permintaan berikutnya dengan ID sesi yang sama menggunakan kembali keputusan yang disimpan tanpa mengevaluasi ulang bobot.
-
Permintaan tanpa ID sesi dievaluasi secara independen tanpa lengket.
Bagaimana gateway menentukan ID sesi tergantung pada jenis target:
-
AgentCore Target runtime — Gateway menggunakan
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idheader. Nilai header harus minimal 33 karakter. Anda tidak perlu mengirim header ini pada permintaan pertama. Jika header tidak ada, runtime agen akan membuat ID sesi secara otomatis, dan gateway menggunakan ID sesi yang dibuat secara otomatis untuk kekakuan pada permintaan berikutnya jika Anda menyertakannya. -
Target passthrough HTTP — Secara default, gateway menggunakan
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idheader. Anda juga dapat mengonfigurasi pengenal sesi khusus dan batas waktu pada target, sehingga klien passthrough yang menggunakan header sesi mereka sendiri tidak harus mengadopsi header sesi runtime. Untuk informasi selengkapnya, lihat Mengonfigurasi kelengketan sesi untuk target passthrough.
Konfigurasikan kelengketan sesi untuk target passthrough
Untuk target passthrough HTTP, Anda dapat menetapkan opsional stickinessConfiguration dalam konfigurasi target untuk mengontrol bagaimana gateway mengidentifikasi sesi dan berapa lama afinitas sesi berlangsung. Ini berguna ketika klien Anda sudah mengirim header sesi mereka sendiri dan Anda tidak ingin meminta mereka untuk juga mengirim header sesi runtime standar.
stickinessConfigurationObjek berisi:
-
identifier (required) - Ekspresi yang memberi tahu gateway di mana menemukan ID sesi dalam permintaan. Saat ini, gateway dapat menyelesaikan ID sesi hanya dari header permintaan. Anda dapat menentukan header dalam salah satu formulir ini:
-
Nama header HTTP biasa, seperti
x-session-id. Gateway membaca ID sesi dari header permintaan itu. -
Ekspresi jalur konteks dari formulir
$.AMZN_AC_GW_CONTEXT.headers.{header-name}, seperti$.AMZN_AC_GW_CONTEXT.headers.x-session-id.Hanya
headerssumber yang didukung hari ini. Sumber lain (misalnya, klaim JWT) saat ini tidak tersedia.
-
-
batas waktu (opsional) - Batas waktu afinitas sesi, dalam hitungan detik, dari 1 hingga 86400 (24 jam). Setelah durasi tidak aktif ini, afinitas sesi berakhir. Jendela diatur ulang pada setiap permintaan (jendela geser).
Ketika target memiliki astickinessConfiguration, gateway menyelesaikan ID sesi dari yang dikonfigurasi. identifier
Contoh berikut membuat target passthrough dengan stickinessConfiguration yang mengekstrak ID sesi dari x-session-id header khusus dan kedaluwarsa afinitas sesi setelah 8 jam (28800 detik):
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "my-passthrough-target", "targetConfiguration": { "http": { "passthrough": { "endpoint": "https://my-service.example.com", "protocolType": "CUSTOM", "stickinessConfiguration": { "identifier": "$.AMZN_AC_GW_CONTEXT.headers.x-session-id", "timeout": 28800 } } } }, "credentialProviderConfigurations": [ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ] }'
Untuk informasi selengkapnya tentang target passthrough, lihat target passthrough HTTP.
Perilaku penting
Keputusan yang disimpan lebih diutamakan daripada perubahan aturan. Jika Anda memperbarui aturan, sesi yang ada dilanjutkan dengan keputusan awal. Ini memastikan konsistensi sesi. Untuk menerapkan aturan baru pada sesi, mulailah sesi baru dengan ID sesi baru.
Sesi berakhir setelah periode tidak aktif. Jendela kedaluwarsa diatur ulang pada setiap permintaan (jendela geser). Untuk target AgentCore Runtime, sesi berakhir setelah 15 hari tidak aktif. Untuk target passthrough HTTP, jendela kedaluwarsa adalah yang timeout Anda tetapkan dalam target stickinessConfiguration (1 hingga 86400 detik); jika Anda tidak menetapkan batas waktu, default berlaku. Setelah sesi berakhir, gunakan ID sesi baru untuk sesi baru untuk menghindari perilaku perutean yang tidak terduga. Kami menyarankan Anda untuk tidak menggunakan kembali ID sesi kedaluwarsa.
Status sesi dicakup per target. Target yang berbeda mempertahankan keadaan sesi independen.
Didukung untuk AgentCore target passthrough Runtime dan HTTP. Sesi lengket tidak didukung untuk target MCP.