

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

# Minta pembatasan untuk Amazon API EC2
<a name="ec2-api-throttling"></a>

Amazon EC2 membatasi permintaan EC2 API untuk setiap AWS akun 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 permintaan API maksimum yang diizinkan. Permintaan API tunduk pada batas permintaan apakah permintaan tersebut berasal dari:
+ Aplikasi pihak ketiga
+ Alat baris perintah
+  EC2 Konsol Amazon

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

**Topics**
+ [Bagaimana throttling diterapkan](#throttling-how)
+ [Minta batas token](#throttling-limits-rate-based)
+ [Batas token sumber daya](#throttling-limits-cost-based)
+ [Pantau pelambatan API](#throttling-monitor)
+ [Mencoba lagi dan backoff eksponensial](#api-backoff)
+ [Minta kenaikan batas](#throttling-increase)

## Bagaimana throttling diterapkan
<a name="throttling-how"></a>

Amazon EC2 menggunakan [algoritma token bucket](https://en.wikipedia.org/wiki/Token_bucket) untuk mengimplementasikan pelambatan API. 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 pelambatan API:

**Topics**
+ [Pembatasan laju permintaan](#throttling-rate-based)
+ [Pembatasan tingkat sumber daya](#throttling-cost-based)

### Pembatasan laju permintaan
<a name="throttling-rate-based"></a>

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 untuk`DescribeHosts`, aksi 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 tersebut 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 token maksimumnya. Misalnya, ukuran bucket untuk`DescribeHosts`, aksi API *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 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, ember tidak mencapai kapasitas maksimumnya. Misalnya, ukuran bucket untuk`DescribeHosts`, aksi API *non-mutasi*, 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](#throttling-limits-rate-based).

### Pembatasan tingkat sumber daya
<a name="throttling-cost-based"></a>

Beberapa tindakan API, seperti `RunInstances` dan`TerminateInstances`, seperti yang dijelaskan dalam tabel berikut, menggunakan pembatasan laju sumber daya selain pembatasan tingkat permintaan. Tindakan API 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 API, termasuk saat bucket belum diisi ulang untuk mendukung permintaan API berikutnya, tindakan API akan terbatas 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 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](#throttling-limits-cost-based).

## Minta ukuran bucket token dan tarif isi ulang
<a name="throttling-limits-rate-based"></a>

Untuk tujuan pembatasan tingkat permintaan, tindakan API dikelompokkan ke dalam kategori berikut:
+ Tindakan **non-mutasi — Tindakan** API yang mengambil data tentang sumber daya. Kategori ini umumnya mencakup semua`Describe*`,`List*`,`Search*`, dan tindakan `Get*` API, seperti`DescribeRouteTables`,`SearchTransitGatewayRoutes`, dan`GetIpamPoolCidrs`. Tindakan API ini biasanya memiliki batas pembatasan API tertinggi.
+ [Tindakan **non-mutasi tanpa filter dan tanpa paginasi — Subset spesifik dari tindakan** API non-mutasi yang, ketika diminta tanpa menentukan [pagination](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html) atau filter, menggunakan token dari bucket token yang lebih kecil.](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/Using_Filtering.html#Filtering_Resources_CLI) Disarankan agar Anda menggunakan pagination dan filtering 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`AllocateHosts`,, dan. `ModifyHosts` `CreateCapacityReservation` Tindakan ini memiliki batas pelambatan yang lebih rendah daripada tindakan API yang tidak bermutasi.
+ **Tindakan intensif sumber daya — Mutasi tindakan** API yang memakan waktu paling banyak dan menghabiskan sebagian besar sumber daya 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** API non-mutasi 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 mereka cocok dalam salah satu kategori lainnya.


| Kategori aksi API | Tindakan | Kapasitas maksimum bucket | Tingkat isi ulang ember | 
| --- | --- | --- | --- | 
| Tindakan yang tidak bermutasi |  Tindakan`Describe*`, `List*``Search*`,, dan `Get*` API yang tidak termasuk dalam kategori lain.  | 100 | 20 | 
| Tindakan non-mutasi tanpa filter dan tanpa paginasi |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ec2/latest/devguide/ec2-api-throttling.html)  | 50 | 10 | 
| Tindakan bermutasi | *Semua tindakan API yang bermutasi yang bukan merupakan tindakan *intensif sumber daya* atau tindakan Uncategorized.* | 50 | 5 | 
| Tindakan intensif sumber daya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/ec2/latest/devguide/ec2-api-throttling.html)  | 50 | 5 | 
| Tindakan konsol yang tidak bermutasi |  Tindakan`Describe*`, `List*``Search*`,, dan `Get*` API, yang dipanggil oleh EC2 konsol Amazon, tetapi tidak termasuk dalam kategori lain.  | 100 | 10 | <a name="uncategorized"></a>


| Tindakan yang tidak dikategorikan | Kapasitas maksimum bucket | Tingkat isi 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
<a name="throttling-limits-cost-based"></a>

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


| Tindakan API | Kapasitas maksimum bucket | Tingkat isi ulang ember | 
| --- | --- | --- | 
| RunInstances | 1000 | 2 | 
| TerminateInstances | 1000 | 20 | 
| StartInstances | 1000 | 2 | 
| StopInstances | 1000 | 20 | 

## Pantau pelambatan API
<a name="throttling-monitor"></a>

Anda dapat menggunakan Amazon CloudWatch untuk memantau permintaan EC2 API Amazon Anda dan untuk mengumpulkan dan melacak metrik seputar pembatasan 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 CloudWatchPantau permintaan API menggunakan CloudWatch](monitor.md).

## Mencoba lagi dan backoff eksponensial
<a name="api-backoff"></a>

Aplikasi Anda mungkin perlu mencoba kembali 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 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 di 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/automating_with_eventbridge.html).

**Percobaan ulang**  
Saat Anda perlu melakukan polling atau mencoba ulang permintaan API, sebaiknya gunakan algoritme backoff 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 [Timeout, percobaan ulang, dan backoff](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/) dengan jitter.

Setiap AWS SDK mengimplementasikan logika coba ulang otomatis. Untuk informasi selengkapnya, lihat [Coba lagi perilaku](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html) di *Panduan Referensi Alat AWS SDKs dan Alat*.

## Minta kenaikan batas
<a name="throttling-increase"></a>

Anda dapat meminta peningkatan batas pembatasan 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 laju isi ulang bucket yang diminta akan melebihi kapasitas maksimum bucket, tingkatkan kapasitas maksimum bucket secara bersamaan.
+ Menyediakan 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`, dan`TerminateInstances`. Pastikan untuk menunjukkan batas mana yang harus ditingkatkan

**Untuk meminta akses ke fitur ini**

1. [AWS Dukungan Pusat](https://console.aws.amazon.com/support/home#/) Terbuka.

1. Pilih **Buat kasus**.

1. Pilih **Akun dan penagihan**.

1. Untuk **Layanan**, pilih **Info Umum dan Memulai**.

1. Untuk **Kategori**, pilih **Menggunakan AWS & Layanan**.

1. Pilih **Langkah selanjutnya: Informasi tambahan**.

1. Untuk **Subjek**, masukkan**Request an increase in my Amazon EC2 API throttling limits**.

1. Untuk **Deskripsi**, salin templat 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
   ```

1. Pilih **Langkah selanjutnya: Selesaikan sekarang atau hubungi kami**.

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

1. Pilih **Kirim**.