View a markdown version of this page

Minta pelambatan 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 pelambatan untuk Amazon EC2 API

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

  • Aplikasi pihak ketiga

  • Alat baris perintah

  • Konsol Amazon EC2

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

Bagaimana throttling diterapkan

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

Amazon EC2 mengimplementasikan dua jenis pelambatan API:

Pembatasan laju permintaan

Dengan pembatasan tingkat permintaan, setiap API dievaluasi secara individual, dan Anda dibatasi pada jumlah permintaan yang Anda buat berdasarkan per API. Setiap permintaan yang Anda buat menghapus satu token dari bucket API. Misalnya, ukuran bucket token untukDescribeHosts, tindakan API yang tidak bermutasi, adalah 100 token. Anda dapat membuat hingga 100 DescribeHosts permintaan dalam satu detik. Jika Anda melebihi 100 permintaan dalam satu detik, Anda akan dibatasi pada API tersebut dan permintaan yang tersisa dalam detik itu gagal, namun permintaan untuk API lain tidak 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 maksimum token. Misalnya, ukuran bucket untukDescribeHosts, tindakan API yang tidak bermutasi, 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 bucket benar-benar penuh sebelum Anda dapat membuat permintaan API. Anda dapat menggunakan token isi ulang saat ditambahkan ke ember. Jika Anda segera menggunakan token isi ulang, bucket tidak mencapai kapasitas maksimumnya. Misalnya, ukuran bucket untukDescribeHosts, tindakan API yang tidak bermutasi, adalah 100 token dan tingkat isi ulang adalah 20 token per detik. Jika Anda menghabiskan bucket dengan membuat 100 permintaan API dalam satu detik, Anda dapat terus membuat 20 permintaan API per detik dengan menggunakan token isi ulang saat ditambahkan ke bucket. Bucket dapat diisi ulang hingga kapasitas maksimum hanya jika Anda membuat kurang dari 20 permintaan API per detik.

Untuk informasi selengkapnya, lihat Minta ukuran bucket token dan tarif isi ulang.

Pembatasan tingkat sumber daya

Beberapa tindakan API, seperti RunInstances danTerminateInstances, seperti yang dijelaskan dalam tabel berikut, menggunakan pembatasan tingkat sumber daya selain pembatasan kecepatan permintaan. Tindakan API ini memiliki bucket token sumber daya terpisah yang habis berdasarkan jumlah sumber daya yang terpengaruh oleh permintaan. Seperti bucket token permintaan, bucket token sumber daya memiliki bucket maksimum yang memungkinkan Anda untuk melakukan burst, dan tingkat isi ulang yang memungkinkan Anda mempertahankan tingkat permintaan yang stabil selama diperlukan. Jika Anda melebihi batas bucket tertentu untuk API, termasuk ketika bucket belum diisi ulang untuk mendukung permintaan API berikutnya, tindakan API dibatasi meskipun Anda belum mencapai batas throttle API 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 instans, menggunakan sejumlah permintaan API, seperti satu permintaan untuk 1000 instans atau empat permintaan untuk 250 instans. Setelah bucket token sumber daya kosong, Anda dapat meluncurkan hingga dua instance setiap detik, menggunakan satu permintaan untuk dua instance atau dua permintaan untuk satu instance.

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

Minta ukuran bucket token dan tarif isi ulang

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

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

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

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

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

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

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

Kategori tindakan API Tindakan Kapasitas maksimum bucket Tingkat pengisian ulang ember
Non-mutating tindakan

T Describe* ind List* akanSearch*,,, dan Get* API yang tidak termasuk dalam kategori lain.

100 20
Tindakan non-mutasi yang tidak difilter dan tidak dipaginasi
  • DescribeInstances

  • DescribeInstanceStatus

  • DescribeNetworkInterfaces

  • DescribeSecurityGroups

  • DescribeSnapshots

  • DescribeSpotInstanceRequests

  • DescribeVolumes

50 10
Tindakan bermutasi

Semua tindakan API yang bermutasi yang bukan Resource-intensive tindakan atau tindakan Uncategorized.

50 5
Resource-intensive tindakan
  • AcceptVpcPeeringConnection

  • AuthorizeSecurityGroupIngress

  • CancelSpotInstanceRequests

  • CreateKeyPair

  • CreateVpcPeeringConnection

  • DeleteVpcPeeringConnection

  • RejectVpcPeeringConnection

  • RevokeSecurityGroupIngress

  • RequestSpotInstances

50 5
Tindakan non-mutasi konsol

T Describe* ind List* akanSearch*,,, dan Get* API, yang dipanggil oleh konsol Amazon EC2, tetapi tidak termasuk dalam kategori lain.

100 10
Tindakan yang tidak dikategorikan Kapasitas maksimum bucket Tingkat pengisian ulang ember
AcceptVpcEndpointConnections 10 1
AdvertiseByoipCidr 1 0.1
AssignIpv6Addresses 100 5
AssignPrivateIpAddresses 100 5
AssignPrivateNatGatewayAddress 10 1
AssociateCapacityReservationBillingOwner 1 0.5
AssociateEnclaveCertificateIamRole 10 1
AssociateIamInstanceProfile 100 5
AssociateNatGatewayAddress 10 1
AttachVerifiedAccessTrustProvider 10 2
AuthorizeClientVpnIngress 5 2
CancelDeclarativePoliciesReport 1 1
CopyImage 100 1
CreateClientVpnRoute 5 2
CreateCoipCidr 5 1
CreateCoipPool 5 1
CreateDefaultSubnet 1 1
CreateDefaultVpc 1 1
CreateLaunchTemplateVersion 100 5
CreateNatGateway 10 1
CreateNetworkInterface 100 5
CreateRestoreImageTask 50 0.1
CreateSnapshot 100 5
CreateSnapshots 100 5
CreateSpotDatafeedSubscription 50 3
CreateStoreImageTask 50 0.1
CreateSubnetCidrReservation 5 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
DeleteClientVpnRoute 5 2
DeleteCoipCidr 5 1
DeleteCoipPool 5 1
DeleteCoipPoolPermission 5 1
DeleteNatGateway 10 1
DeleteNetworkInterface 100 5
DeleteSnapshot 100 5
DeleteSpotDatafeedSubscription 50 3
DeleteSubnetCidrReservation 5 1
DeleteQueuedReservedInstances 5 5
DeleteTags 100 10
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
DescribeAggregateIdFormat 10 10
DescribeByoipCidrs 1 0.5
DescribeCapacityBlockExtensionOfferings 10 0.15
DescribeCapacityBlockOfferings 10 0.15
DescribeDeclarativePoliciesReports 5 5
DescribeHostReservations 5 2
DescribeHostReservationOfferings 5 2
DescribeIdentityIdFormat 10 10
DescribeIdFormat 10 10
DescribeInstanceTopology 1 1
DescribeMovingAddresses 1 1
DescribePrincipalIdFormat 10 10
DescribeReservedInstancesOfferings 10 10
DescribeSecurityGroupReferences 20 5
DescribeSpotDatafeedSubscription 100 13
DescribeSpotFleetInstances 100 5
DescribeSpotFleetRequestHistory 100 5
DescribeSpotFleetRequests 50 3
DescribeStaleSecurityGroups 20 5
DescribeStoreImageTasks 50 0.5
DescribeVerifiedAccessInstanceLoggingConfigurations 10 2
DetachVerifiedAccessTrustProvider 10 2
DisableFastLaunch 5 2
DisableImageBlockPublicAccess 1 0.1
DisableSnapshotBlockPublicAccess 1 0.1
DisassociateCapacityReservationBillingOwner 1 0.5
DisassociateEnclaveCertificateIamRole 10 1
DisassociateIamInstanceProfile 100 5
DisassociateNatGatewayAddress 10 1
EnableFastLaunch 5 2
EnableImageBlockPublicAccess 1 0.1
EnableSnapshotBlockPublicAccess 1 0.1
GetAssociatedEnclaveCertificateIamRoles 10 1
GetDeclarativePoliciesReportSummary 5 5
GetHostReservationPurchasePreview 5 2
ModifyImageAttribute 100 5
ModifyInstanceMetadataDefaults 2 2
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
PurchaseCapacityBlockExtension 10 0.15
PurchaseHostReservation 5 2
PurchaseReservedInstancesOffering 5 5
RejectVpcEndpointConnections 10 1
RestoreAddressToClassic 1 1
RevokeClientVpnIngress 5 2
RunInstances 5 2
StartDeclarativePoliciesReport 1 1
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 tindakan API yang menggunakan pembatasan tingkat sumber daya.

Tindakan API Kapasitas maksimum bucket Tingkat pengisian ulang ember
RunInstances 1000 2
TerminateInstances 1000 20
StartInstances 1000 2
StopInstances 1000 20

Memantau pelambatan API

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

Percobaan ulang dan mundur eksponensial

Aplikasi Anda mungkin perlu mencoba lagi permintaan API. 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 pembatasan

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

Perubahan status sumber daya

Sebelum memulai polling untuk memeriksa pembaruan status, berikan waktu permintaan untuk berpotensi diselesaikan. Misalnya, tunggu beberapa menit sebelum memeriksa apakah instance Anda aktif. Saat 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 peristiwa Pember State-change itahuan Instans EC2 untuk memberi tahu Anda tentang perubahan status untuk sebuah instance. Untuk informasi selengkapnya, lihat Men gotomatiskan Amazon EC2 menggunakan EventBridge.

Percobaan ulang

Saat Anda perlu melakukan polling atau mencoba kembali permintaan API, sebaiknya gunakan algoritma backkoff eksponensial untuk menghitung interval tidur antara 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 Waktu habis, percobaan ulang, dan mundur dengan jitter.

Setiap AWS SDK mengimplementasikan logika coba ulang otomatis. Untuk informasi selengkapnya, lihat Per ilaku Coba Ulang di Panduan Refer AWS ensi SDK dan Alat.

Melihat batas API Anda saat ini

Anda dapat melihat batas saat ini dan default untuk setiap tindakan API Amazon EC2 untuk Anda Akun AWS menggunakan konsol Kuota Layanan.

Bagaimana kuota berhubungan dengan batas throttle Anda

Setiap batas throttle API terdiri dari dua kuota yang bekerja sama untuk menentukan burst dan tingkat permintaan berkelanjutan:

  • Kapasitas maksimum bucket — menentukan jumlah maksimum permintaan yang dapat Anda buat dalam semburan. Ini adalah tingkat ledakan Anda.

  • Tingkat isi ulang bucket — menentukan jumlah token yang ditambahkan ke bucket per detik. Ini adalah tingkat berkelanjutan Anda.

Contoh: Lihat batas RunInstances throttle

Untuk melihat batas RunInstances throttle, cariRunInstances. Konsol menampilkan:

  • RunInstancespermintaan kapasitas maksimum bucket - misalnya 5 (burst)

  • RunInstancesminta tingkat isi ulang bucket - misalnya 2 per detik (berkelanjutan)

Kedua kuota ini bersama-sama menentukan batas RunInstances throttle lengkap.

Memahami nilai kuota

  • Nilai kuota tingkat akun yang diterapkan menunjukkan penggantian kuota apa pun yang diterapkan ke akun Anda. Ini adalah kuota efektif Anda saat ini.

  • Nilai kuota AWS default menunjukkan kuota throttling API default.

catatan

Berikan waktu hingga 24 jam agar penyesuaian kuota tercermin di konsol Kuota Layanan.

Untuk melihat kuota Anda saat ini
  1. Buka konsol Service Quotas di https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/.

  2. Cari nama tindakan API (misalnya,RunInstances) dan pola nama kuota untuk menemukan entri kuota yang sesuai.

Tabel berikut menjelaskan pola nama kuota.

Pola nama kuota Deskripsi
{API_NAME}minta kapasitas maksimum bucket Burst rate — jumlah maksimum token yang tersedia
{API_NAME}minta tarif isi ulang ember Tingkat berkelanjutan - token ditambahkan per detik
{API_NAME}kapasitas maksimum bucket permintaan tanpa filter Burst rate — jumlah maksimum token yang tersedia untuk permintaan tanpa filter (tanpa halaman)
{API_NAME}tingkat pengisian ulang ember permintaan tanpa filter Tingkat berkelanjutan — token ditambahkan per detik untuk permintaan yang tidak difilter (tidak diberi halaman)

Minta kenaikan batas

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

Rekomendasi
  • Minta paling banyak tiga kali batas Anda yang ada dalam satu permintaan.

  • Prioritaskan peningkatan tarif isi ulang bucket sebelum meningkatkan kapasitas maksimum bucket.

  • Jika tingkat pengisian ulang bucket yang diminta akan melebihi kapasitas maksimum bucket, tingkatkan kapasitas maksimum bucket pada saat yang bersamaan.

  • Berikan semua tindakan API yang memerlukan peningkatan. Batas diterapkan pada tindakan API individual, bukan kategori tindakan API.

  • Ada batas tingkat permintaan dan tingkat sumber daya untuk tindakan API berikut:RunInstances,StartInstances,StopInstances, danTerminateInstances. Pastikan untuk menunjukkan batas mana yang harus ditingkatkan

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

  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, salin template berikut dan berikan informasi yang diperlukan.

    Please increase the API throttling limits for my account. Related page: https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-throttling.html Description: Brief notes about your use case. If available, include the IDs of a few Amazon EC2 requests that were throttled. Time window: One-hour window when peak throttling or usage occurred. region_1 request rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_1 resource rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_2 request rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_2 resource rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate
  9. Pilih Langkah Berikutnya: Selesaikan sekarang atau hubungi kami.

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

  11. Pilih Kirim.