Minta pembatasan untuk Amazon EC2 API - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Minta pembatasan untuk Amazon EC2 API

Amazon EC2 membatasi EC2 API permintaan untuk setiap AWS akun berdasarkan per wilayah. Kami melakukan ini untuk membantu kinerja layanan, dan untuk memastikan penggunaan yang adil untuk semua EC2 pelanggan Amazon. Throttling memastikan bahwa permintaan ke Amazon EC2 API tidak melebihi batas maksimum API permintaan yang diizinkan. APIPermintaan tunduk pada batas permintaan apakah mereka berasal dari:

  • Aplikasi pihak ketiga

  • Alat baris perintah

  • EC2Konsol Amazon

Jika Anda melebihi batas API pelambatan, Anda mendapatkan kode RequestLimitExceeded kesalahan.

Bagaimana throttling diterapkan

Amazon EC2 menggunakan algoritma token bucket untuk mengimplementasikan API throttling. Dengan algoritme ini, akun Anda memiliki bucket yang memegang sejumlah tertentu token. Jumlah token dalam bucket mewakili batas throttling Anda pada detik tertentu.

Amazon EC2 mengimplementasikan dua jenis API pelambatan:

Pembatasan laju permintaan

Dengan pembatasan tarif permintaan, masing-masing API dievaluasi secara individual, dan Anda dibatasi pada jumlah permintaan yang Anda buat per- basis. API Setiap permintaan yang Anda buat menghapus satu token dari API bucket. Misalnya, ukuran ember token untukDescribeHosts, API tindakan non-mutasi, adalah 100 token. Anda dapat membuat hingga 100 DescribeHosts permintaan dalam satu detik. Jika Anda melebihi 100 permintaan dalam satu detik, Anda akan dibatasi API dan permintaan yang tersisa dalam detik itu gagal, namun permintaan untuk permintaan lainnya tidak API terpengaruh.

Bucket secara otomatis diisi ulang pada tingkat yang ditetapkan. Jika bucket berada di bawah kapasitas maksimumnya, sejumlah token ditambahkan kembali setiap detik hingga mencapai kapasitas maksimumnya. Jika ember penuh saat token isi ulang tiba, mereka dibuang. Bucket tidak dapat menampung lebih dari jumlah token maksimumnya. Misalnya, ukuran bucket untukDescribeHosts, API tindakan non-mutasi, adalah 100 token dan tingkat isi ulang adalah 20 token per detik. Jika Anda membuat 100 DescribeHosts permintaan dalam satu detik, bucket dikurangi menjadi nol (0) token. Bucket kemudian diisi ulang dengan 20 token setiap detik, hingga mencapai kapasitas maksimum 100 token. Ini berarti bahwa ember kosong mencapai kapasitas maksimumnya setelah 5 detik jika tidak ada permintaan yang dibuat selama waktu itu.

Anda tidak perlu menunggu ember benar-benar penuh sebelum Anda dapat mengajukan API permintaan. Anda dapat menggunakan token isi ulang saat ditambahkan ke ember. Jika Anda segera menggunakan token isi ulang, ember tidak mencapai kapasitas maksimumnya. Misalnya, ukuran bucket untukDescribeHosts, API tindakan non-mutasi, adalah 100 token dan tingkat isi ulang adalah 20 token per detik. Jika Anda menghabiskan bucket dengan membuat 100 API permintaan dalam satu detik, Anda dapat terus membuat 20 API permintaan per detik dengan menggunakan token isi ulang saat ditambahkan ke ember. Bucket dapat diisi ulang hingga kapasitas maksimum hanya jika Anda membuat kurang dari 20 API permintaan per detik.

Pembatasan tingkat sumber daya

Beberapa API tindakan, seperti RunInstances danTerminateInstances, seperti yang dijelaskan dalam tabel berikut, menggunakan pembatasan tingkat sumber daya selain pembatasan tingkat permintaan. APITindakan ini memiliki bucket token sumber daya terpisah yang habis berdasarkan jumlah sumber daya yang dipengaruhi oleh permintaan. Seperti bucket token permintaan, bucket token sumber daya memiliki bucket maksimum yang memungkinkan Anda melakukan burst, dan tingkat isi ulang yang memungkinkan Anda mempertahankan tingkat permintaan yang stabil selama diperlukan. Jika Anda melebihi batas bucket tertentu untuk sebuah bucketAPI, termasuk ketika bucket belum diisi ulang untuk mendukung API permintaan berikutnya, tindakan tersebut API terbatas meskipun Anda belum mencapai batas API throttle total.

Misalnya, ukuran bucket token sumber daya untuk RunInstances adalah 1000 token, dan tingkat isi ulang adalah dua token per detik. Oleh karena itu, Anda dapat segera meluncurkan 1000 instance, menggunakan sejumlah API permintaan, seperti satu permintaan untuk 1000 instans atau empat permintaan untuk 250 instance. Setelah bucket token sumber daya kosong, Anda dapat meluncurkan hingga dua instance setiap detik, menggunakan salah satu permintaan untuk dua instance atau dua permintaan untuk satu instance.

Untuk informasi selengkapnya, lihat Ukuran bucket token sumber daya dan tarif isi ulang.

Batas pelambatan

Bagian berikut menjelaskan ukuran bucket token permintaan dan bucket token sumber daya serta tarif isi ulang.

Minta ukuran bucket token dan tarif isi ulang

Untuk tujuan pembatasan tarif permintaan, API tindakan dikelompokkan ke dalam kategori berikut:

  • Tindakan non-mutasi — API tindakan yang mengambil data tentang sumber daya. Kategori ini umumnya mencakup semuaDescribe*,List*,Search*, dan Get* API tindakan, sepertiDescribeRouteTables,SearchTransitGatewayRoutes, danGetIpamPoolCidrs. APITindakan ini biasanya memiliki batas API pelambatan tertinggi.

  • Tindakan non-mutasi tanpa filter dan tanpa paginasi — Subset spesifik dari tindakan non-mutasi API yang, ketika diminta tanpa menentukan pagination atau filter, menggunakan token dari bucket token yang lebih kecil. Disarankan agar Anda menggunakan pagination dan filtering sehingga token dikurangkan dari bucket token standar (lebih besar).

  • Tindakan mutasi — API tindakan yang membuat, memodifikasi, atau menghapus sumber daya. Kategori ini umumnya mencakup semua API tindakan yang tidak dikategorikan sebagai tindakan non-mutasi, sepertiAllocateHosts,, dan. ModifyHosts CreateCapacityReservation Tindakan ini memiliki batas pelambatan yang lebih rendah daripada tindakan API non-mutasi.

  • Tindakan intensif sumber daya — Mutasi API tindakan yang membutuhkan waktu paling banyak dan menghabiskan sumber daya paling banyak untuk diselesaikan. Tindakan ini memiliki batas pelambatan yang lebih rendah daripada tindakan mutasi. Mereka dibatasi secara terpisah dari tindakan mutasi lainnya.

  • Tindakan non-mutasi konsol — Tindakan non-mutasi yang API diminta dari konsol Amazon. EC2 APITindakan ini dibatasi secara terpisah dari tindakan API non-mutasi lainnya.

  • Tindakan yang tidak dikategorikan — Ini adalah API tindakan yang menerima ukuran bucket token dan tarif isi ulang mereka sendiri, meskipun menurut definisi mereka cocok dalam salah satu kategori lainnya.

Tabel berikut menunjukkan ukuran bucket token permintaan dan tarif isi ulang untuk semua AWS Wilayah.

APIkategori aksi Tindakan Kapasitas maksimum bucket Tingkat isi ulang ember
Tindakan yang tidak bermutasi

SemuaDescribe*,, List*Search*, dan Get* API tindakan yang bukan Tindakan non-mutasi tanpa filter dan tanpa paginasi atau tindakan yang tidak dikategorikan.

100 20
Tindakan non-mutasi tanpa filter dan tanpa paginasi
  • DescribeInstances

  • DescribeInstanceStatus

  • DescribeNetworkInterfaces

  • DescribeSecurityGroups

  • DescribeSnapshots

  • DescribeSpotInstanceRequests

  • DescribeVolumes

50 10
Tindakan bermutasi

Semua API tindakan bermutasi yang bukan tindakan intensif sumber daya atau tindakan yang tidak dikategorikan.

50 5
Tindakan intensif sumber daya
  • AcceptVpcPeeringConnection

  • AuthorizeSecurityGroupIngress

  • CancelSpotInstanceRequests

  • CreateKeyPair

  • CreateVpcPeeringConnection

  • DeleteVpcPeeringConnection

  • RejectVpcPeeringConnection

  • RevokeSecurityGroupIngress

  • RequestSpotInstances

50 5
Tindakan konsol yang tidak bermutasi
  • Describe*

  • Get*

100 10
Tindakan yang tidak dikategorikan AcceptVpcEndpointConnections 10 1
AdvertiseByoipCidr 1 0.1
AssignIpv6Addresses 100 5
AssignPrivateIpAddresses 100 5
AssignPrivateNatGatewayAddress 10 1
AssociateEnclaveCertificateIamRole 10 1
AssociateIamInstanceProfile 100 5
AssociateNatGatewayAddress 10 1
AttachVerifiedAccessTrustProvider 10 2
CreateDefaultSubnet 1 1
CreateDefaultVpc 1 1
CopyImage 100 1
CreateLaunchTemplateVersion 100 5
CreateNatGateway 10 1
CreateNetworkInterface 100 5
CreateRestoreImageTask 50 0.1
CreateSnapshot 100 5
CreateSnapshots 100 5
CreateStoreImageTask 50 0.1
CreateTags 100 10
CreateVerifiedAccessEndpoint 20 4
CreateVerifiedAccessGroup 10 2
CreateVerifiedAccessInstance 10 2
CreateVerifiedAccessTrustProvider 10 2
CreateVolume 100 5
CreateVpcEndpoint 4 0,3
CreateVpcEndpointServiceConfiguration 10 1
DeleteNatGateway 10 1
DeleteNetworkInterface 100 5
DeleteSnapshot 100 5
DeleteTags 100 10
DeleteQueuedReservedInstances 5 5
DeleteVerifiedAccessEndpoint 20 4
DeleteVerifiedAccessGroup 10 2
DeleteVerifiedAccessInstance 10 2
DeleteVerifiedAccessTrustProvider 10 2
DeleteVolume 100 5
DeleteVpcEndpoints 4 0,3
DeleteVpcEndpointServiceConfigurations 10 1
DeprovisionByoipCidr 1 0.1
DeregisterImage 100 5
DetachVerifiedAccessTrustProvider 10 2
DescribeByoipCidrs 1 0,5
DescribeCapacityBlockOfferings 10 0,15
DescribeInstanceTopology 1 1
DescribeMovingAddresses 1 1
DescribeReservedInstancesOfferings 10 10
DescribeSpotFleetRequestHistory 100 5
DescribeSpotFleetInstances 100 5
DescribeSpotFleetRequests 50 3
DescribeStoreImageTasks 50 0,5
DescribeVerifiedAccessInstanceLoggingConfigurations 10 2
DisableFastLaunch 5 2
DisableImageBlockPublicAccess 1 0.1
DisableSnapshotBlockPublicAccess 1 0.1
DisassociateEnclaveCertificateIamRole 10 1
DisassociateIamInstanceProfile 100 5
DisassociateNatGatewayAddress 10 1
EnableFastLaunch 5 2
EnableImageBlockPublicAccess 1 0.1
EnableSnapshotBlockPublicAccess 1 0.1
GetAssociatedEnclaveCertificateIamRoles 10 1
ModifyImageAttribute 100 5
ModifyInstanceMetadataOptions 100 5
ModifyLaunchTemplate 100 5
ModifyNetworkInterfaceAttribute 100 5
ModifySnapshotAttribute 100 5
ModifyVerifiedAccessEndpoint 20 4
ModifyVerifiedAccessEndpointPolicy 20 4
ModifyVerifiedAccessGroup 10 2
ModifyVerifiedAccessGroupPolicy 20 4
ModifyVerifiedAccessInstance 10 2
ModifyVerifiedAccessInstanceLoggingConfiguration 10 2
ModifyVerifiedAccessTrustProvider 10 2
ModifyVpcEndpoint 4 0,3
ModifyVpcEndpointServiceConfiguration 10 1
MoveAddressToVpc 1 1
ProvisionByoipCidr 1 0.1
PurchaseCapacityBlock 10 0,15
PurchaseReservedInstancesOffering 5 5
RejectVpcEndpointConnections 10 1
RestoreAddressToClassic 1 1
RunInstances 5 2
StartInstances 5 2
TerminateInstances 100 5
UnassignPrivateIpAddresses 100 5
UnassignPrivateNatGatewayAddress 10 1
WithdrawByoipCidr 1 0.1

Ukuran bucket token sumber daya dan tarif isi ulang

Tabel berikut mencantumkan ukuran bucket token sumber daya dan tarif isi ulang untuk API tindakan yang menggunakan pembatasan laju sumber daya.

APIaksi Kapasitas maksimum bucket Tingkat isi ulang ember
RunInstances 1000 2
TerminateInstances 1000 20
StartInstances 1000 2
StopInstances 1000 20

Pantau API pelambatan

Anda dapat menggunakan Amazon CloudWatch untuk memantau EC2 API permintaan Amazon Anda dan untuk mengumpulkan dan melacak metrik seputar API pembatasan. Anda juga dapat membuat alarm untuk memperingatkan Anda ketika Anda hampir mencapai batas API pelambatan. Untuk informasi selengkapnya, lihat Pantau permintaan EC2 API Amazon menggunakan Amazon CloudWatch.

Mencoba lagi dan backoff eksponensial

Aplikasi Anda mungkin perlu mencoba ulang API permintaan. Sebagai contoh:

  • Untuk memeriksa pembaruan dalam status sumber daya

  • Untuk menghitung sejumlah besar sumber daya (misalnya, semua volume Anda)

  • Untuk mencoba lagi permintaan setelah gagal dengan kesalahan server (5xx) atau kesalahan pelambatan

Namun, untuk kesalahan klien (4xx), Anda harus merevisi permintaan untuk memperbaiki masalah sebelum mencoba permintaan lagi.

Perubahan status sumber daya

Sebelum Anda memulai polling untuk memeriksa pembaruan status, berikan waktu permintaan untuk berpotensi selesai. Misalnya, tunggu beberapa menit sebelum memeriksa apakah instans Anda aktif. Saat Anda memulai polling, gunakan interval tidur yang sesuai antara permintaan berturut-turut untuk menurunkan tingkat permintaan. API Untuk hasil terbaik, gunakan interval tidur yang meningkat atau variabel.

Atau, Anda dapat menggunakan Amazon EventBridge untuk memberi tahu Anda tentang status beberapa sumber daya. Misalnya, Anda dapat menggunakan acara Pemberitahuan Perubahan Status EC2 Instans untuk memberi tahu Anda tentang perubahan status untuk sebuah instance. Untuk informasi selengkapnya, lihat Mengotomatiskan Amazon EC2 menggunakan EventBridge.

Percobaan ulang

Saat Anda perlu melakukan polling atau mencoba ulang API permintaan, sebaiknya gunakan algoritma backoff eksponensial untuk menghitung interval tidur antar permintaan. API Ide di balik backoff eksponensial adalah menggunakan waktu tunggu yang semakin lama antara percobaan ulang untuk respons kesalahan yang berurutan. Anda harus menerapkan interval penundaan maksimum, serta jumlah percobaan ulang maksimum. Anda juga dapat menggunakan jitter (penundaan acak) untuk mencegah tabrakan berturut-turut. Untuk informasi selengkapnya, lihat Timeout, percobaan ulang, dan backoff dengan jitter.

Masing-masing AWS SDK menerapkan logika coba ulang otomatis. Untuk informasi selengkapnya, lihat Coba lagi perilaku di Panduan Referensi Alat AWS SDKs dan Alat.

Minta kenaikan batas

Anda dapat meminta peningkatan batas API pelambatan untuk Anda. Akun AWS

Untuk meminta akses ke fitur ini
  1. AWS Dukungan Pusat Terbuka.

  2. Pilih Buat kasus.

  3. Pilih Akun dan penagihan.

  4. Untuk Layanan, pilih Info Umum dan Memulai.

  5. Untuk Kategori, pilih Menggunakan AWS & Layanan.

  6. Pilih Langkah selanjutnya: Informasi tambahan.

  7. Untuk Subjek, masukkanRequest an increase in my Amazon EC2 API throttling limits.

  8. Untuk Deskripsi, masukkan Please increase the API throttling limits for my account. Related page: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html. Juga mencakup informasi berikut:

    • Deskripsi kasus penggunaan Anda.

    • Wilayah di mana Anda membutuhkan peningkatan.

    • Jendela satu jam, diUTC, saat pelambatan puncak atau penggunaan terjadi (untuk menghitung batas pelambatan baru).

  9. Pilih Langkah selanjutnya: Selesaikan sekarang atau hubungi kami.

  10. Pada tab Hubungi kami, pilih bahasa kontak pilihan Anda dan metode kontak.

  11. Pilih Kirim.