View a markdown version of this page

Limitation des demandes pour l'API Amazon ECS - Amazon Elastic Container Service

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 ECS

Amazon Elastic Container Service limite toutes les demandes d'API pour chaque AWS compte, région par région. Nous procédons ainsi pour garantir des performances cohérentes et une utilisation équitable du service pour tous les clients Amazon ECS. La régulation garantit que les appels à l'API Amazon ECS ne dépassent pas les quotas de demandes d'API maximum autorisés pour Amazon ECS et les autres AWS services auxquels il s'intègre. Les appels d'API sont soumis aux quotas de demandes, qu'ils proviennent de :

  • Une application tierce

  • Un outil de ligne de commande

  • La console Amazon ECS

Si vous dépassez le quota de limitation de l'API, le code ThrottlingException d'erreur s'affiche.

An error occurred (ThrottlingException) when calling the DescribeClusters operation (reached max retries: 4): Rate exceeded. com.amazonaws.services.ecs.model.AmazonECSException: Rate exceeded (Service: AmazonECS; Status Code: 400; Error Code: ThrottlingException; Request ID: 5ed90669-e454-464d-9b2f-6523bc86f537; Proxy: null)

Comment l'étranglement est-il appliqué

Amazon ECS utilise l'algorithme Token Bucket pour implémenter la régulation des API. Avec cet algorithme, votre compte dispose d'un compartiment contenant un nombre spécifique de jetons. Le nombre de jetons dans le compartiment représente votre quota de limitation à chaque seconde.

Amazon ECS examine le taux de soumission de demandes d'API pour toutes les API Amazon ECS de votre compte, par région, et applique deux types de quotas de limitation des API : permanents et intensifs. Le taux soutenu est le nombre moyen de demandes d'API autorisées par seconde au fil du temps pour une opération. Le taux de rafale est le nombre maximum de demandes d'API autorisées par seconde. Avec Burst, vous pouvez régulièrement effectuer un nombre de demandes d'API supérieur au taux soutenu. Amazon ECS limite ensuite les demandes d'API suivantes jusqu'à ce que le taux de demandes d'API autorisées au fil du temps se stabilise à un taux soutenu. Dans l'algorithme du seau à jetons, la capacité maximale du godet indique le taux d'éclatement et le taux de recharge du godet est le taux soutenu. Nous utiliserons ces termes pour vous fournir une illustration de la limitation des demandes d'API Amazon ECS dans l'exemple suivant.

Le nombre de demandes d'API que vous effectuez est limité et chaque demande supprime un jeton du bucket de jetons. Par exemple, la taille du compartiment pour les actions de lecture du cluster, telles que l'DescribeClustersAPI, est de 50 jetons. Vous pouvez donc effectuer jusqu'à 50 DescribeClusters demandes en une seconde. Si vous dépassez 50 demandes par seconde, vous êtes limité et les demandes restantes échouent au cours de cette seconde.

Les seaux se rechargent automatiquement à un débit défini. Si le compartiment est inférieur à sa capacité maximale, un nombre défini de jetons y est ajouté chaque seconde 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 bucket ne peut pas contenir plus de jetons que son maximum. Par exemple, la taille du compartiment pour les actions de lecture du cluster, telles que l'DescribeClustersAPI, est de 50 jetons, et le taux de recharge est de 20 jetons par seconde. Si vous effectuez 50 demandes d'DescribeClustersAPI par seconde, le bucket est immédiatement réduit à zéro jeton. Le seau est ensuite rempli de 20 jetons par seconde, jusqu'à ce qu'il atteigne sa capacité maximale de 50 jetons. Cela signifie que le seau précédemment vide atteint sa capacité maximale au bout de 2,5 secondes.

Il n'est pas nécessaire d'attendre que le compartiment soit complètement plein pour pouvoir effectuer des demandes d'API. Vous pouvez utiliser des jetons au fur et à mesure qu'ils sont ajoutés au bucket. Si vous utilisez immédiatement les jetons de recharge, le seau n'atteint pas sa capacité maximale. Par exemple, la taille du compartiment pour les actions de lecture du cluster, telles que l'DescribeClustersAPI, est de 50 jetons, et le taux de recharge est de 20 jetons par seconde. Si vous épuisez le compartiment en effectuant 50 demandes d'API par seconde, vous pouvez continuer à effectuer 20 demandes d'API par seconde. Le compartiment ne peut être rempli à sa capacité maximale que si vous effectuez moins de 20 demandes d'API par seconde.

Demandez la taille des seaux de jetons et les taux de recharge

Pour limiter le taux de demandes, les actions de l'API sont regroupées en catégories. Toutes les actions d'API d'une catégorie partagent le même compartiment de jetons. Par exemple, DescribeClusters les ListClusters API partagent le compartiment d'actions de lecture du cluster, dont la capacité est de 50 et le taux de recharge de 20. Cela signifie que le nombre cumulé de demandes d'API pour toutes les actions de lecture du cluster est limité par le même quota de 50 demandes d'API. Ainsi, vous pouvez effectuer 25 DescribeClusters et 25 demandes d'ListClustersAPI en une seconde, ou 30 DescribeClusters et 20ListClusters, ou 50 DescribeClusters et 0ListClusters, ou 0 DescribeClusters et 50ListClusters, mais vous ne pouvez pas faire 50 DescribeClusters et 50 ListClusters demandes en même temps. Le taux soutenu est également appliqué de manière cumulative à toutes les demandes d'API d'un bucket.

Le tableau suivant indique la capacité du seau (ou le taux de rupture) et le taux de recharge (ou continu) pour toutes les AWS régions. Toutes les catégories d'actions d'API appliquent des quotas tarifaires pour chaque AWS compte par région.

Catégorie d'action de l'API Actions Capacité maximale du compartiment (ou taux en rafale) Taux de recharge du compartiment (ou taux soutenu)
Actions de modification du cluster
  • CreateCluster

  • DeleteCluster

  • PutClusterCapacityProviders

  • UpdateCluster

  • UpdateClusterSettings

20 1
Actions de lecture groupées
  • DescribeClusters

  • ListClusters

50 20
Définition des tâches, modification des actions
  • DeregisterTaskDefinition

  • RegisterTaskDefinition

20 1
Définition des tâches, lecture des actions
  • DescribeTaskDefinition

  • ListTaskDefinitions

  • ListTaskDefinitionFamilies

50 20
Actions de suppression de définitions de tâches
  • DeleteTaskDefinitions

5 1
Actions de modification du fournisseur de capacité
  • CreateCapacityProvider

  • DeleteCapacityProvider

  • UpdateCapacityProvider

10 1
Actions de lecture du fournisseur de capacité
  • DescribeCapacityProviders

50 20
Actions de modification des balises
  • TagResource

  • UntagResource

20 10
Actions de lecture de balises
  • ListTagsForResource

50 20
Configuration des actions de modification
  • DeleteAccountSetting

  • PutAccountSetting

  • PutAccountSettingDefault

10 1
Configuration des actions de lecture
  • ListAccountSettings

50 20
Actions de modification des ressources du cluster
  • DeleteAttributes

  • DeregisterContainerInstance

  • ExecuteCommand

  • PutAttributes

  • RunTask1

  • StartTask

  • StopTask

  • UpdateContainerAgent

  • UpdateContainerInstancesStates

100 40
Actions de lecture des ressources du cluster
  • DescribeContainerInstances

  • DescribeTasks

  • ListAttributes

  • ListContainerInstances

  • ListTasks

100 20
Actions de modification de l'agent
  • RegisterContainerInstance

  • SubmitAttachmentStateChanges

  • SubmitContainerStateChange

  • SubmitTaskStateChange

200 120
Actions de modification du service
  • CreateService

  • DeleteService

  • UpdateService

50 5
Actions de lecture du service
  • DescribeServices

  • ListServices

100 20
Actions de déploiement de services
  • DescribeServiceDeployments

  • ListServiceDeployments

50 20
Actions de révision des services
  • DescribeServiceRevisions

50 20

Actions de protection des tâches

  • UpdateTaskProtection

  • GetTaskProtection

200 80
Actions de lecture des ressources du service de cluster
  • ListServicesByNamespace

10 1

1 AWS Fargate limite également l'RunTaskAPI Amazon ECS aux taux indiqués ici dans le manuel Amazon ECS Developer Guide.

Ajustement des quotas de limitation des API

Vous pouvez demander une augmentation des quotas de limitation des API pour votre AWS compte. Pour demander un ajustement de quota, contactezAWS Support Center.

Gestion de la régulation des API

Vous pouvez mettre en œuvre une nouvelle tentative d'erreur et une stratégie de réduction exponentielle afin d'éviter l'impact des erreurs de limitation sur vos charges de travail. Si vous utilisez le AWS SDK, la logique de nouvelle tentative automatique est déjà intégrée et configurable. Vous pouvez consulter les ressources suivantes pour plus de détails :