Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Praktik terbaik batas tarif
Topik ini memberikan panduan tentang merancang, menerapkan, dan membatasi kecepatan operasi secara efektif di gateway Anda.
Pola desain
- Akses berjenjang
-
Buat beberapa batas tarif dengan kunci dimensi yang sama (
$.context.jwt.subatau$.context.jwt.tier) tetapi entri berbeda untuk setiap tingkat. Gunakan entri yang tepat untuk pengguna premium yang dikenal dan*entri sebagai tingkat default. - Pertahanan secara mendalam
-
Batas laju lapisan pada beberapa granularitas. Misalnya, gabungkan batas RPS per target (melindungi kapasitas backend) dengan batas RPM per penelepon (mencegah penyalahgunaan individu) dan batas token per alat (biaya kontrol).
- Infrastruktur sebagai Kode dengan BatchPut
-
Gunakan
BatchPutGatewayRateLimitsuntuk mengelola konfigurasi batas tarif secara deklaratif. Batch put menggunakan semantik upsert, membuatnya aman untuk dijalankan berulang kali dari CI/CD pipeline atau template infrastruktur. - Peluncuran bertahap
-
Mulailah dengan batas tarif yang besar dan kencangkan dari waktu ke waktu berdasarkan pola lalu lintas yang diamati. Pantau atribut rentang
aws.agentcore.gateway.throttle.customer.decisionOTEL dan tingkat respons 429 sebelum mengurangi batas. - Blok darurat
-
Gunakan
rate: 0entri untuk memblokir pemanggil, target, atau alat tertentu selama insiden. Blok mulai berlaku setelah propagasi selesai (hingga 30 detik).
Panduan pemilihan kunci dimensi
Pilih kunci dimensi yang menghasilkan jumlah bucket tarif yang dibatasi dan dapat diprediksi:
| Kunci dimensi | Kardinalitas | Rekomendasi |
|---|---|---|
|
|
Rendah (set yang diketahui) |
Pilihan yang sangat baik. Gunakan untuk perlindungan per target. |
|
|
Low-medium |
Pilihan yang baik untuk gateway MCP dengan set alat yang dikenal. |
|
|
Rendah (set yang diketahui) |
Sangat baik untuk gateway inferensi. |
|
|
Medium-high |
Bagus untuk batas per pengguna. Kardinalitas dibatasi oleh basis pengguna Anda. |
|
|
Rendah |
Sangat baik untuk kuota per tim. |
|
|
Sedang |
Bagus untuk batas per peran dalam IAM-authenticated pengaturan. |
|
|
Tak terbatas |
Jangan gunakan . Membuat bucket unik per token. |
|
|
Tak terbatas |
Jangan gunakan . Membuat bucket unik per permintaan. |
Awas
Kunci dimensi tak terbatas (seperti $.context.jwt.jti atau klaim dengan cakupan permintaan) membuat bucket tarif dalam jumlah tak terbatas. Ini membuang memori, menurunkan kinerja, dan secara efektif menonaktifkan pembatasan kecepatan karena setiap permintaan mendapatkan bucket sendiri dan tidak pernah dibatasi.
Pertimbangan batas tarif token
Batas tarif token memerlukan pertimbangan khusus karena model penegakan berbasis anggaran mereka:
-
Pemanfaatan anggaran: Gateway memperkirakan token input sebelum meneruskan dan mencatat penggunaan aktual setelah respons. Short-lived semburan mungkin untuk sementara melebihi tingkat yang dikonfigurasi.
-
Opsi aliran: Untuk permintaan penyelesaian obrolan streaming (
/v1/chat/completions), gateway secara otomatis menambahkan"stream_options": {"include_usage": true}ke badan permintaan saat batas tarif token aktif dan opsi belum ada. Ini memungkinkan penghitungan token yang akurat untuk penegakan TPM. -
Jalur yang didukung: Batas tarif token hanya berlaku untuk permintaan pada jalur inferensi yang diketahui (
/v1/chat/completions,/v1/messages,/v1/responses). Permintaan ke jalur lain tidak tunduk pada batas token. -
Pass-through target: Jika proxy target Anda ke penyedia model tanpa menggunakan jalur inferensi yang diketahui, batas tarif token tidak berlaku. Pertimbangkan untuk menggunakan batas tarif permintaan atau merestrukturisasi target Anda untuk menggunakan jalur yang didukung.
FAQ batas tarif token
Bagian ini menjawab pertanyaan umum tentang bagaimana penegakan token-per-menit (TPM) bekerja dalam praktik.
- Bagaimana cara kerja penegakan TPM?
-
Gateway menggunakan model penegakan berbasis anggaran. Saat permintaan tiba, gateway memperkirakan jumlah token input dan mencadangkan jumlah tersebut dari anggaran TPM yang dikonfigurasi. Jika perkiraan melebihi anggaran yang tersisa, permintaan ditolak dengan respons HTTP 429 sebelum mencapai model. Setelah permintaan berhasil diselesaikan, gateway mendamaikan anggaran dengan mengganti perkiraan awal dengan penggunaan token aktual (input + token keluaran) yang dilaporkan oleh penyedia model.
- Bagaimana cara kerja TPM dengan prompt caching?
-
Gateway memperhitungkan token berdasarkan
output_tokensnilaiinput_tokensdan yang dikembalikan penyedia model dalam respons inferensi. Gateway tidak melacak atau menyesuaikan secara independen untuk cache yang cepat. Apakah token yang di-cache disertakaninput_tokenstergantung pada bagaimana penyedia model Anda melaporkan penggunaan — perilaku ini bervariasi antar penyedia. Konsultasikan dokumentasi penyedia model Anda untuk memahami bagaimana caching cepat memengaruhi jumlah token yang dilaporkan dan konsumsi TPM efektif Anda. - Jika batas TPM saya adalah 50 dan tokenizer memperkirakan 51 token input, apakah permintaan dibatasi?
-
Ya. Gateway mengevaluasi perkiraan tokenizer terhadap anggaran TPM yang tersisa sebelum meneruskan permintaan. Jika perkiraan melebihi anggaran yang tersedia, permintaan ditolak dengan respons HTTP 429. Tanggapan mencakup
retryAfterbidang yang menunjukkan kapan anggaran yang cukup akan tersedia. - Jika permintaan yang berjalan lama menghabiskan lebih banyak token daripada yang diperkirakan semula, apakah respons dibatasi?
-
Tidak. Setelah gateway menerima dan meneruskan permintaan, tanggapan selalu disampaikan secara penuh. Gateway menyimpan perkiraan token pada waktu permintaan, dan permintaan lainnya terus dievaluasi terhadap anggaran yang tersisa saat permintaan sedang dalam penerbangan. Ketika respons selesai, gateway mendamaikan penggunaan aktual dengan perkiraan. Jika konsumsi aktual lebih tinggi, anggaran disesuaikan — ini dapat menyebabkan permintaan berikutnya dibatasi, tetapi respons asli tidak pernah terganggu.
- Bagaimana cara kerja akuntansi token dengan respons streaming?
-
Gateway menggunakan potongan respons akhir sebagai sumber kebenaran untuk rekonsiliasi token. Tidak semua penyedia model melaporkan penggunaan token di setiap potongan yang dialirkan — beberapa memasukkannya hanya di bagian akhir. Gateway menunggu respons lengkap sebelum merekonsiliasi anggaran TPM. Untuk streaming Penyelesaian Obrolan OpenAI, gateway secara otomatis menambahkan
"stream_options": {"include_usage": true}ke badan permintaan ketika batas tarif token aktif dan opsi ini belum ada, memastikan jumlah token yang akurat tersedia di bagian akhir.
Pertimbangan operasional
- Waktu propagasi
-
Perubahan batas laju membutuhkan waktu hingga 30 detik untuk disebarkan. Rencanakan penundaan ini selama insiden — entri blok (
rate: 0) tidak langsung. - Nilai perilaku nol
-
Tingkat 0 memblokir semua lalu lintas yang cocok. Gunakan ini dengan sengaja untuk pemblokiran darurat. Double-check nilai dimensi entri sebelum pengaturan
rate: 0untuk menghindari pemblokiran lalu lintas yang sah secara tidak sengaja. - Tombol dimensi yang tidak dapat diubah
-
Anda tidak dapat mengubah
dimensionKeysbatas tarif yang ada. Jika Anda membutuhkan dimensi yang berbeda, hapus batas tarif yang ada dan buat yang baru. Rencanakan struktur kunci dimensi Anda sebelum membuat batas tingkat produksi.
penting
Batas tarif menggunakan perilaku gagal buka. Jika layanan batas tarif sementara tidak tersedia, lalu lintas diizinkan lewat. Jangan gunakan batas tarif sebagai satu-satunya mekanisme keamanan Anda. Gabungkan mereka dengan otentikasi, otorisasi, aturan gateway, dan WAF untuk pertahanan secara mendalam.
Memantau
Gunakan sinyal berikut untuk memantau efektivitas batas laju:
Sinyal respons yang dibatasi:
-
Pantau tanggapan HTTP 429 dari gateway Anda.
-
Parsing
limitKeybidang dalam respons yang dibatasi untuk mengidentifikasi batas laju mana yang dipicu. -
Gunakan
retryAfternilai untuk memahami jendela penegakan.
OpenTelemetry atribut rentang:
| Atribut | Apa yang harus dipantau |
|---|---|
|
|
Hitungan permintaan yang dibatasi. Peringatan tentang lonjakan yang tidak terduga. |
|
|
Identifikasi batas tarif mana yang paling aktif. Carilah penegakan yang tidak seimbang. |
|
|
Tentukan apakah permintaan, token, atau koneksi adalah hambatan. |
|
|
Identifikasi penelepon atau target mana yang paling sering mencapai batas. |
|
|
Daftar yang diurutkan dari semua bucket yang diperiksa. Berguna untuk memahami batasan mana yang diterapkan pada permintaan tertentu. |
Contoh kueri pemantauan:
Gunakan Amazon CloudWatch Logs Insights pada grup aws/spans log untuk menanyakan rentang OTEL gateway Anda. Contoh berikut membantu mengidentifikasi pola pelambatan.
Hitung permintaan yang dibatasi berdasarkan batas tarif:
filter attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled" | stats count(*) as throttle_count by attributes.`aws.agentcore.gateway.throttle.customer.limit_key` | sort throttle_count desc
Identifikasi penelepon mana yang paling dibatasi:
filter attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled" | stats count(*) as throttle_count by attributes.`aws.agentcore.gateway.throttle.customer.matched_entry` | sort throttle_count desc | limit 20
Bandingkan permintaan yang diizinkan vs permintaan yang dibatasi dari waktu ke waktu:
filter ispresent(attributes.`aws.agentcore.gateway.throttle.customer.decision`) | stats count(*) as total, sum(attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled") as throttled by bin(5m)
Jika batas tarif tunggal memperhitungkan sebagian besar peristiwa throttle, pertimbangkan apakah tarif yang dikonfigurasi terlalu membatasi atau apakah pola lalu lintas menunjukkan penyalahgunaan.
Membuat alarm dari rentang batas laju
Anda dapat mengonversi atribut rentang OTEL batas tarif menjadi CloudWatch metrik dan alarm untuk secara proaktif memantau perilaku pelambatan. Ini membutuhkan pengaktifan observabilitas gateway (lihat Meng aktifkan observabilitas untuk sumber daya AgentCore gateway).
Langkah 1: Aktifkan rentang gateway
Pastikan gateway Anda mengaktifkan observabilitas. Rentang gateway diekspor ke CloudWatch dan dapat dilihat di Pencarian CloudWatch Transaksi dan halaman pengamatan AI generatif.
Langkah 2: Buat filter CloudWatch metrik
Buat filter metrik pada grup aws/spans log untuk mengekstrak peristiwa throttle sebagai metrik khusus. Contoh berikut membuat metrik yang menghitung permintaan yang dibatasi per batas tarif:
{ "filterPattern": "{ $.attributes.aws\\.agentcore\\.gateway\\.throttle\\.customer\\.decision = \"throttled\" }", "metricTransformations": [ { "metricName": "GatewayRateLimitThrottleCount", "metricNamespace": "AgentCore/Gateway/RateLimits", "metricValue": "1", "defaultValue": 0, "dimensions": { "LimitKey": "$.attributes.aws\\.agentcore\\.gateway\\.throttle\\.customer\\.limit_key" } } ] }
Langkah 3: Buat CloudWatch alarm
Setelah filter metrik dipasang, buat alarm yang dipicu ketika kecepatan throttle melebihi ambang batas.
contoh
Langkah 4: Bangun dasbor
Buat CloudWatch dasbor untuk memvisualisasikan kecepatan throttle dari waktu ke waktu. Konfigurasi widget berikut menunjukkan jumlah throttle yang dikelompokkan berdasarkan batas laju:
{ "metrics": [ [ "AgentCore/Gateway/RateLimits", "GatewayRateLimitThrottleCount", "LimitKey", "per-target-rps" ], [ "AgentCore/Gateway/RateLimits", "GatewayRateLimitThrottleCount", "LimitKey", "per-caller-rpm" ] ], "period": 60, "stat": "Sum", "title": "Rate Limit Throttles by Limit" }
Tip
Anda juga dapat menggunakan Throttles metrik bawaan (tersedia secara default di bawah metrik pemanggilan gateway) untuk jumlah throttle total tanpa perincian per batas. Gunakan filter metrik khusus pada atribut rentang saat Anda membutuhkan visibilitas per batas atau per penelepon.