Batasi tarif panggilan menurut langganan
BERLAKU UNTUK: Semua tingkatAN API Management
Kebijakan rate-limit
mencegah lonjakan penggunaan API per langganan dengan membatasi tarif panggilan ke nomor tertentu per periode waktu tertentu. Ketika tarif panggilan terlampaui, penelepon menerima 429 Too Many Requests
kode status respons.
Untuk memahami perbedaan antara batas tarif dan kuota, lihat Batas tarif dan kuota.
Perhatian
Karena sifat arsitektur pelambatan yang terdistribusi, pembatasan laju tidak pernah sepenuhnya akurat. Perbedaan antara jumlah permintaan yang dikonfigurasi dan permintaan sebenarnya yang diizinkan bervariasi berdasarkan volume dan tarif permintaan, latensi backend, dan faktor lainnya.
Catatan
Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.
Pernyataan kebijakan
<rate-limit calls="number" renewal-period="seconds" retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name">
<api name="API name" id="API id" calls="number" renewal-period="seconds" >
<operation name="operation name" id="operation id" calls="number" renewal-period="seconds" />
</api>
</rate-limit>
Atribut
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
panggilan | Jumlah total panggilan maksimum yang diperbolehkan selama interval waktu yang ditentukan di renewal-period . Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
periode-perpanjangan | Durasi dalam detik jendela geser yang selama itu jumlah permintaan yang diizinkan tidak boleh melebihi nilai yang ditentukan di calls . Nilai maksimum yang diizinkan: 300 detik. Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
coba lagi-setelah-header-nama | Nama header respons yang nilainya adalah interval coba lagi yang direkomendasikan dalam hitungan detik setelah tarif panggilan yang ditentukan terlampaui. Ekspresi kebijakan tidak diizinkan. | No | Retry-After |
coba lagi-setelah-nama-variabel | Nama variabel yang menyimpan interval coba lagi yang direkomendasikan dalam hitungan detik setelah laju panggilan yang ditentukan terlampaui. Ekspresi kebijakan tidak diizinkan. | No | T/A |
sisa-panggilan-header-nama | Nama header respons yang nilainya setelah setiap eksekusi kebijakan adalah jumlah panggilan tersisa yang diizinkan untuk interval waktu yang ditentukan di renewal-period . Ekspresi kebijakan tidak diizinkan. |
No | T/A |
sisa-panggilan-variabel-nama | Nama variabel yang setelah setiap eksekusi kebijakan menyimpan jumlah panggilan yang tersisa yang diizinkan untuk interval waktu yang ditentukan dalam renewal-period . Ekspresi kebijakan tidak diizinkan. |
No | T/A |
total-panggilan-header-nama | Nama header respons yang nilainya adalah nilai yang ditentukan di calls . Ekspresi kebijakan tidak diizinkan. |
No | T/A |
Elemen
Elemen | Deskripsi | Wajib diisi |
---|---|---|
api | Tambahkan satu atau beberapa elemen ini untuk memberlakukan batas tarif panggilan pada API dalam produk. Batas tarif panggilan produk dan API diterapkan secara terpisah. API dapat dirujuk baik melalui name atau id . Jika kedua atribut diberikan, id akan digunakan dan name akan diabaikan. |
No |
operasi | Tambahkan satu atau beberapa elemen ini untuk memberlakukan batas kecepatan panggilan pada operasi dalam API. Produk, API, dan batas tarif panggilan operasi diterapkan secara independen. Operasi dapat dirujuk baik melalui name atau id . Jika kedua atribut diberikan, id akan digunakan dan name akan diabaikan. |
No |
atribut api
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
nama | Nama API yang akan menerapkan batas tarif. | Salah satu name atau id harus ditentukan. |
T/A |
id | ID API yang akan menerapkan batas tarif. | Salah satu name atau id harus ditentukan. |
T/A |
panggilan | Jumlah total panggilan maksimum yang diperbolehkan selama interval waktu yang ditentukan di renewal-period . Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
periode-perpanjangan | Durasi dalam detik jendela geser yang selama itu jumlah permintaan yang diizinkan tidak boleh melebihi nilai yang ditentukan di calls . Nilai maksimum yang diizinkan: 300 detik. Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
atribut operasi
Atribut | Deskripsi | Wajib diisi | Default |
---|---|---|---|
nama | Nama operasi yang akan menerapkan batas tarif. | Salah satu name atau id harus ditentukan. |
T/A |
id | ID operasi untuk menerapkan batas tarif. | Salah satu name atau id harus ditentukan. |
T/A |
panggilan | Jumlah total panggilan maksimum yang diperbolehkan selama interval waktu yang ditentukan di renewal-period . Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
periode-perpanjangan | Durasi dalam detik jendela geser yang selama itu jumlah permintaan yang diizinkan tidak boleh melebihi nilai yang ditentukan di calls . Nilai maksimum yang diizinkan: 300 detik. Ekspresi kebijakan tidak diizinkan. |
Ya | T/A |
Penggunaan
- Bagian kebijakan: masuk
- Cakupan kebijakan: produk, API, operasi
- Gateway: klasik, v2, konsumsi, dihost sendiri, ruang kerja
Catatan penggunaan
- Kebijakan ini hanya dapat digunakan sekali per definisi kebijakan.
- Kebijakan ini hanya diterapkan saat API diakses menggunakan kunci langganan.
- Jumlah batas laju dalam gateway yang dihost sendiri dapat dikonfigurasi untuk disinkronkan secara lokal (di antara instans gateway di seluruh node kluster), misalnya, melalui penyebaran bagan Helm untuk Kubernetes atau menggunakan templat penyebaran portal Azure. Namun, jumlah batas laju tidak disinkronkan dengan sumber daya gateway lain yang dikonfigurasi dalam instans API Management, termasuk gateway terkelola di cloud. Pelajari lebih lanjut
Contoh
Dalam contoh berikut, batas tarif per langganan adalah 20 panggilan per 90 detik. Setelah setiap eksekusi kebijakan, panggilan lainnya yang diizinkan dalam jangka waktu disimpan dalam variabel remainingCallsPerSubscription
.
<policies>
<inbound>
<base />
<rate-limit calls="20" renewal-period="90" remaining-calls-variable-name="remainingCallsPerSubscription"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
Kebijakan terkait
Konten terkait
Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat:
- Tutorial: Mengubah dan melindungi API Anda
- Referensi Kebijakan untuk daftar lengkap pernyataan kebijakan dan pengaturannya
- Ekspresi kebijakan
- Mengatur atau mengedit kebijakan
- Menggunakan kembali konfigurasi kebijakan
- Repositori cuplikan kebijakan
- Toolkit kebijakan Azure API Management
- Kebijakan penulis menggunakan Microsoft Copilot di Azure