Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Limitation des demandes pour l'API Amazon EC2
Amazon EC2 limite les demandes d'API EC2 pour chaque AWS compte par région. Nous faisons cela pour améliorer les performances du service et garantir une utilisation équitable pour tous les clients Amazon EC2. La régulation garantit que les demandes adressées à l'API Amazon EC2 ne dépassent pas les limites maximales autorisées. Les demandes d'API sont soumises aux limites de demandes, qu'elles proviennent de :
-
Une application tierce
-
Un outil en ligne de commande
-
La console Amazon EC2
Si vous dépassez une limite de limitation de l'API, vous obtenez le code RequestLimitExceeded d'erreur.
Table des matières
Comment l'étranglement est appliqué
Amazon EC2 utilise l'algorithme de bucket de jetons
Amazon EC2 met en œuvre deux types de limitation des API :
Types de limitation des API
Limitation du débit de demande
Grâce à la limitation du taux de demandes, chaque API est évaluée individuellement et le nombre de demandes que vous effectuez par API est limité. Chaque demande que vous effectuez supprime un jeton du compartiment de l'API. Par exemple, la taille du compartiment de jetons pour DescribeHosts une action d'API non mutante est de 100 jetons. Vous pouvez effectuer jusqu'à 100 DescribeHosts demandes en une seconde. Si vous dépassez 100 demandes en une seconde, vous êtes limité sur cette API et les demandes restantes au cours de cette seconde échouent. Toutefois, les demandes relatives à d'autres API ne sont pas affectées.
Les seaux se rechargent automatiquement à un taux défini. Si le compartiment est inférieur à sa capacité maximale, un nombre défini de jetons y est rajouté toutes les secondes jusqu'à ce qu'il atteigne sa capacité maximale. Si le seau est plein à l'arrivée des jetons de recharge, ils sont jetés. Le compartiment ne peut pas contenir plus que son nombre maximum de jetons. Par exemple, la taille du compartiment pour DescribeHosts une action d'API non mutante est de 100 jetons et le taux de recharge est de 20 jetons par seconde. Si vous effectuez 100 DescribeHosts demandes en une seconde, le compartiment est réduit à zéro (0) jeton. Le seau est ensuite rempli de 20 jetons par seconde, jusqu'à ce qu'il atteigne sa capacité maximale de 100 jetons. Cela signifie qu'un compartiment vide atteint sa capacité maximale au bout de 5 secondes si aucune demande n'est faite pendant cette période.
Il n'est pas nécessaire d'attendre que le compartiment soit complètement plein pour pouvoir effectuer des requêtes d'API. Vous pouvez utiliser des jetons de recharge lorsqu'ils sont ajoutés au seau. Si vous utilisez immédiatement les jetons de recharge, le seau n'atteindra pas sa capacité maximale. Par exemple, la taille du compartiment pour DescribeHosts une action d'API non mutante est de 100 jetons et le taux de recharge est de 20 jetons par seconde. Si vous épuisez le compartiment en effectuant 100 demandes d'API par seconde, vous pouvez continuer à effectuer 20 demandes d'API par seconde en utilisant les jetons de recharge au fur et à mesure qu'ils sont ajoutés au compartiment. Le compartiment ne peut être rempli à sa capacité maximale que si vous effectuez moins de 20 demandes d'API par seconde.
Pour de plus amples informations, veuillez consulter Demandez la taille des seaux de jetons et les taux de recharge.
Limitation du débit des ressources
Certaines actions d'API, telles que RunInstances etTerminateInstances, comme décrit dans le tableau suivant, utilisent la limitation du débit des ressources en plus de la limitation du débit de demandes. Ces actions d'API comportent un compartiment de jetons de ressources distinct qui s'épuise en fonction du nombre de ressources touchées par la demande. À l'instar des compartiments de jetons de demande, les compartiments de jetons de ressources ont un maximum de compartiments qui vous permet d'éclater, et un taux de recharge qui vous permet de maintenir un taux de demandes constant aussi longtemps que nécessaire. Si vous dépassez une limite de compartiment spécifique pour une API, notamment lorsqu'un compartiment n'est pas encore rempli pour prendre en charge la prochaine demande d'API, l'action de l'API est limitée même si vous n'avez pas atteint la limite d'accélération totale de l'API.
Par exemple, la taille du compartiment de jetons de ressources pour RunInstances est de 1 000 jetons et le taux de recharge est de deux jetons par seconde. Par conséquent, vous pouvez lancer immédiatement 1 000 instances, en utilisant n'importe quel nombre de requêtes d'API, par exemple une demande pour 1 000 instances ou quatre demandes pour 250 instances. Une fois que le compartiment de jetons de ressources est vide, vous pouvez lancer jusqu'à deux instances par seconde, en utilisant soit une requête pour deux instances, soit deux requêtes pour une instance.
Pour de plus amples informations, veuillez consulter Tailles des seaux de jetons de ressources et taux de recharge.
Demandez la taille des seaux de jetons et les taux de recharge
À des fins de limitation du débit de demandes, les actions d'API sont regroupées dans les catégories suivantes :
-
Non-mutating actions : actions d'API qui récupèrent des données relatives aux ressources. Cette catégorie inclut généralement toutes les actions
Describe*List*,Search*, et les actions d'Get*API, telles queDescribeRouteTablesSearchTransitGatewayRoutes, etGetIpamPoolCidrs. Ces actions d'API présentent généralement les limites de limitation d'API les plus élevées. -
Actions non mutantes non filtrées et non paginées : sous-ensemble spécifique d'actions d'API non mutantes qui, lorsqu'elles sont demandées sans spécifier de pagination ni de filtre, utilisent des jetons provenant d'un compartiment de jetons plus petit. Il est recommandé d'utiliser la pagination et le filtrage afin que les jetons soient déduits du compartiment de jetons standard (plus grand).
-
Actions de mutation : actions d'API qui créent, modifient ou suppriment des ressources. Cette catégorie inclut généralement toutes les actions d'API qui ne sont pas classées comme des actions non mutantes, telles que
AllocateHostsModifyHosts, et.CreateCapacityReservationCes actions ont une limite de limitation inférieure à celle des actions d'API non mutantes. -
Resource-intensive actions : actions d'API mutantes qui prennent le plus de temps et consomment le plus de ressources pour être exécutées. Ces actions ont une limite d'étranglement encore plus basse que les actions mutantes. Elles sont limitées séparément des autres actions mutantes.
-
Actions de console non mutantes : actions Non-mutating d'API demandées depuis la console Amazon EC2. Ces actions d'API sont limitées séparément des autres actions d'API non mutantes.
-
Actions non classées : il s'agit d'actions d'API qui reçoivent leurs propres tailles de bucket de jetons et leurs propres taux de recharge, même si, par définition, elles entrent dans l'une des autres catégories.
| Catégorie d'action d'API | Actions | Capacité maximale du compartiment | Taux de remplissage du seau |
|---|---|---|---|
| Non-mutating actions |
Les actions |
100 | 20 |
| Actions non mutantes non filtrées et non paginées |
|
50 | 10 |
| Actions mutantes | Toutes les actions d'API en mutation qui ne sont pas des Resource-intensive actions ou des actions non classées. |
50 | 5 |
| Resource-intensive actions |
|
50 | 5 |
| Actions ne mutant pas sur la console |
Les actions |
100 | 10 |
| Actions non classées | Capacité maximale du compartiment | Taux de remplissage du seau |
|---|---|---|
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 |
Tailles des seaux de jetons de ressources et taux de recharge
Le tableau suivant répertorie la taille des compartiments de jetons de ressources et les taux de recharge pour les actions d'API qui utilisent la limitation du débit de ressources.
| Action d’API | Capacité maximale du compartiment | Taux de remplissage du seau |
|---|---|---|
RunInstances |
1 000 | 2 |
TerminateInstances |
1 000 | 20 |
StartInstances |
1 000 | 2 |
StopInstances |
1 000 | 20 |
Surveiller la limitation des API
Vous pouvez utiliser Amazon CloudWatch pour surveiller vos demandes d'API Amazon EC2 et pour collecter et suivre des mesures relatives à la limitation des API. Vous pouvez également créer une alarme pour vous avertir lorsque vous êtes sur le point d'atteindre les limites de limitation de l'API. Pour de plus amples informations, veuillez consulter Surveillez les demandes EC2 d'API Amazon à l'aide d'Amazon CloudWatch.
Réessais et retard exponentiel
Il se peut que votre application doive réessayer une demande d'API. Par exemple :
-
Pour vérifier la mise à jour de l'état d'une ressource
-
Pour énumérer un grand nombre de ressources (par exemple, tous vos volumes)
-
Pour réessayer une demande après qu'elle a échoué en raison d'une erreur de serveur (5xx) ou d'une erreur de limitation
Toutefois, en cas d'erreur client (4xx), vous devez modifier la demande pour corriger le problème avant de réessayer.
Changements d'état des ressources
Avant de commencer à interroger pour vérifier les mises à jour de statut, donnez à la demande le temps de terminer éventuellement. Par exemple, attendez quelques minutes avant de vérifier si votre instance est active. Lorsque vous commencez à interroger, utilisez un intervalle de veille approprié entre les demandes successives afin de réduire le taux de demandes d'API. Pour obtenir de meilleurs résultats, utilisez un intervalle de veille croissant ou variable.
Vous pouvez également utiliser Amazon EventBridge pour vous informer de l'état de certaines ressources. Par exemple, vous pouvez utiliser l'événement EC2 Instance State-change Notification pour vous informer d'un changement d'état pour une instance. Pour plus d'informations, consultez Automatiser Amazon EC2 à l'aide EventBridge de.
Nouvelles tentatives
Lorsque vous devez interroger ou réessayer une demande d'API, nous vous recommandons d'utiliser un algorithme d'annulation exponentielle pour calculer l'intervalle de veille entre les demandes d'API. L’idée sous-jacente consiste à utiliser des temps d’attente progressivement plus longs entre les tentatives en cas de réponses d’erreur consécutives. Vous devez implémenter un intervalle maximal, ainsi qu'un nombre maximal de nouvelles tentatives. Vous pouvez également utiliser le jitter (délai aléatoire) pour éviter les collisions successives. Pour de plus amples informations, consultez la section Délais d’attente, nouvelles tentatives et backoff avec instabilité
Chaque AWS SDK implémente une logique de nouvelle tentative automatique. Pour plus d'informations, consultez la section Comportement des nouvelles tentatives dans le Guide de référence AWS des kits de développement logiciel et des outils.
Afficher les limites actuelles de vos API
Vous pouvez consulter vos limites actuelles et par défaut pour chaque action d'API Amazon EC2 que vous effectuez à Compte AWS l'aide de la console https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html Service Quotas.
Quel est le lien entre les quotas et votre limite d'accélérateur
Chaque limite d'accélération de l'API est composée de deux quotas qui fonctionnent ensemble pour définir le taux de demandes en rafale et soutenu :
-
Capacité maximale du bucket : détermine le nombre maximum de demandes que vous pouvez effectuer en rafale. Il s'agit de votre fréquence de rafale.
-
Taux de remplissage du seau : détermine le nombre de jetons ajoutés au seau par seconde. Il s'agit de votre taux soutenu.
Exemple : Afficher la RunInstances limite d'accélération
Pour afficher la limite d'RunInstancesaccélération, recherchezRunInstances. La console affiche :
-
RunInstancescapacité maximale du compartiment de demande — par exemple 5 (rafale) -
RunInstancestaux de remplissage du seau de demandes — par exemple 2 par seconde (soutenu)
Ces deux quotas définissent ensemble la limite d'RunInstancesaccélération complète.
Comprendre les valeurs des quotas
-
La valeur du quota appliqué au niveau du compte indique toute dérogation de quota appliquée à votre compte. Il s'agit de votre quota effectif actuel.
-
La valeur de quota AWS par défaut indique le quota de limitation de l'API par défaut.
Note
Prévoyez jusqu'à 24 heures pour que tout ajustement de quota soit reflété dans la console Service Quotas.
Pour consulter vos quotas actuels
-
Ouvrez la console Service Quotas sur https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/
. -
Recherchez le nom de l'action de l'API (par exemple
RunInstances) et le modèle de nom de quota pour trouver les entrées de quota correspondantes.
Le tableau suivant décrit les modèles de noms de quotas.
| Modèle de nom de quota | Description |
|---|---|
{API_NAME}demander la capacité maximale du seau |
Taux de rafale — le nombre maximum de jetons disponibles |
{API_NAME}demander le taux de remplissage du seau |
Taux soutenu — jetons ajoutés par seconde |
{API_NAME}capacité maximale du compartiment de requêtes non filtré |
Taux de rafale : nombre maximum de jetons disponibles pour les requêtes non filtrées (non paginées) |
{API_NAME}taux de remplissage du seau de demandes non filtré |
Taux soutenu : jetons ajoutés par seconde pour les demandes non filtrées (non paginées) |
Demander une augmentation de limite
Vous pouvez demander une augmentation des limites de limitation de l'API pour votre. Compte AWS
Recommandations
-
Demandez au plus trois fois votre limite existante en une seule demande.
-
Priorisez l'augmentation du taux de remplissage des godets avant d'augmenter leur capacité maximale.
-
Si le taux de remplissage du seau demandé dépasse la capacité maximale du seau, augmentez la capacité maximale du seau en même temps.
-
Indiquez toutes les actions d'API qui nécessitent une augmentation. Des limites sont appliquées à des actions d'API individuelles, et non à des catégories d'actions d'API.
-
Il existe des limites de taux de demandes et de débit de ressources pour les actions d'API suivantes :
RunInstancesStartInstances,StopInstances, etTerminateInstances. Assurez-vous d'indiquer quelle limite doit être augmentée
Pour demander l'accès à cette fonctionnalité
-
Choisissez Create case (Créer une demande).
-
Choisissez Compte et facturation.
-
Dans la section Service, sélectionnez Informations générales et Mise en route.
-
Dans Catégorie, choisissez Utilisation AWS et services.
-
Choisissez Étape suivante : informations supplémentaires.
-
Pour Subject (Objet), saisissez
Request an increase in my Amazon EC2 API throttling limits. -
Pour Description, copiez le modèle suivant et fournissez les informations requises.
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_1request rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_1resource rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_2request rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_2resource rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rate -
Cliquez sur Étape suivante : résoudre maintenant ou nous contacter.
-
Dans l'onglet Contactez-nous, choisissez la langue et le mode de contact que vous préférez.
-
Sélectionnez Soumettre.