View a markdown version of this page

Drosselung von Anfragen für die Amazon ECS-API - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Drosselung von Anfragen für die Amazon ECS-API

Amazon Elastic Container Service drosselt alle API-Anfragen für jedes AWS Konto pro Region. Wir tun dies, um eine gleichbleibende Leistung und eine faire Nutzung des Service für alle Amazon ECS-Kunden sicherzustellen. Durch die Drosselung wird sichergestellt, dass Aufrufe der Amazon ECS-API die maximal zulässigen API-Anforderungsquoten sowohl für Amazon ECS als auch für die anderen AWS Services, in die es integriert ist, nicht überschreiten. API-Aufrufe unterliegen den Anforderungsquoten, unabhängig davon, ob sie aus folgenden Quellen stammen:

  • Eine Drittanbieteranwendung

  • Ein Befehlszeilentool

  • Die Amazon ECS-Konsole

Wenn Sie ein API-Drosselungskontingent überschreiten, erhalten Sie den ThrottlingException Fehlercode.

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)

Wie wird die Drosselung angewendet

Amazon ECS verwendet den Token-Bucket-Algorithmus, um API-Drosselung zu implementieren. Mit diesem Algorithmus verfügt Ihr Konto über einen Bucket, der eine bestimmte Anzahl von Token enthält. Die Anzahl der Token im Bucket entspricht Ihrer Drosselungsquote zu einer bestimmten Sekunde.

Amazon ECS untersucht die Rate der eingereichten API-Anfragen für alle Amazon ECS-APIs in Ihrem Konto pro Region und wendet zwei Arten von API-Drosselungsquoten an: nachhaltig und Burst. Die Dauerrate ist die durchschnittliche Anzahl von API-Anfragen, die pro Sekunde im Laufe der Zeit für einen Vorgang zulässig sind. Die Burst-Rate ist die maximale Anzahl von API-Anfragen, die in einer Sekunde zulässig sind. Mit Burst können Sie in regelmäßigen Abständen eine höhere Anzahl von API-Anfragen stellen, als für die Dauerrate vorgesehen ist. Danach drosselt Amazon ECS nachfolgende API-Anfragen, bis sich die Rate der im Laufe der Zeit erlaubten API-Anfragen auf die anhaltende Rate stabilisiert hat. Im Token-Bucket-Algorithmus steht die maximale Bucket-Kapazität für die Burst-Rate und die Bucket-Nachfüllrate für die Dauerrate. Wir verwenden diese Bedingungen, um Ihnen im folgenden Beispiel eine Veranschaulichung der Amazon ECS-API-Anforderungsdrosselung zu geben.

Die Anzahl der API-Anfragen, die Sie stellen, wird gedrosselt, und bei jeder Anfrage wird ein Token aus dem Token-Bucket entfernt. Beispielsweise beträgt die Bucket-Größe für Cluster-Leseaktionen wie die DescribeClusters API 50 Token, sodass Sie in einer Sekunde bis zu 50 DescribeClusters Anfragen stellen können. Wenn Sie in einer Sekunde mehr als 50 Anfragen haben, werden Sie gedrosselt und die verbleibenden Anfragen innerhalb dieser Sekunde schlagen fehl.

Eimer werden automatisch mit einer festgelegten Geschwindigkeit wieder aufgefüllt. Wenn der Bucket seine maximale Kapazität unterschreitet, wird ihm jede Sekunde eine bestimmte Anzahl von Tokens hinzugefügt, bis er seine maximale Kapazität erreicht hat. Wenn der Eimer voll ist, wenn die Nachfüll-Token eintreffen, werden sie weggeworfen. Der Bucket kann nicht mehr als die maximale Anzahl an Tokens aufnehmen. Beispielsweise beträgt die Bucket-Größe für Cluster-Leseaktionen wie die DescribeClusters API 50 Token, und die Nachfüllrate beträgt 20 Token pro Sekunde. Wenn Sie in einer Sekunde 50 DescribeClusters API-Anfragen stellen, wird der Bucket sofort auf null Token reduziert. Der Bucket wird dann jede Sekunde um 20 Token aufgefüllt, bis er seine maximale Kapazität von 50 Token erreicht hat. Das bedeutet, dass der zuvor leere Eimer nach 2,5 Sekunden seine maximale Kapazität erreicht.

Sie müssen nicht warten, bis der Bucket vollständig gefüllt ist, bevor Sie API-Anfragen stellen können. Sie können Tokens verwenden, wenn sie dem Bucket hinzugefügt werden. Wenn Sie die Nachfüll-Token sofort verwenden, erreicht der Eimer nicht seine maximale Kapazität. Beispielsweise beträgt die Bucket-Größe für Cluster-Leseaktionen wie die DescribeClusters API 50 Token, und die Nachfüllrate beträgt 20 Token pro Sekunde. Wenn Sie den Bucket leeren, indem Sie 50 API-Anfragen pro Sekunde stellen, können Sie weiterhin 20 API-Anfragen pro Sekunde stellen. Der Bucket kann nur dann bis zur maximalen Kapazität aufgefüllt werden, wenn Sie weniger als 20 API-Anfragen pro Sekunde stellen.

Größen und Nachfüllraten für Token-Buckets anfragen

Zur Begrenzung der Anforderungsrate sind API-Aktionen in Kategorien unterteilt. Alle API-Aktionen in einer Kategorie teilen sich denselben Token-Bucket. Zum Beispiel DescribeClusters teilen sich ListClusters APIs den Bereich Cluster-Leseaktionen, für den die Kapazität 50 und die Nachfüllrate 20 beträgt. Das bedeutet, dass die Gesamtzahl der API-Anfragen für alle Cluster-Leseaktionen um dieselbe Burst-Rate-Quote von 50 API-Anfragen gedrosselt wird. Sie können also 25 DescribeClusters und 25 ListClusters API-Anfragen in einer Sekunde oder 30 DescribeClusters und 20 ListClusters oder 50 und 0 oder 0 DescribeClusters ListClusters DescribeClusters und 50 stellenListClusters, aber Sie können nicht 50 DescribeClusters und 50 ListClusters Anfragen gleichzeitig stellen. Die konstante Rate wird in ähnlicher Weise kumulativ auf alle API-Anfragen innerhalb eines Buckets angewendet.

Die folgende Tabelle zeigt die Bucket-Kapazität (oder Burst-Kapazität) und die Nachfüllrate (oder die Dauerfüllrate) für alle Regionen. AWS In allen API-Aktionskategorien werden Preiskontingente für jedes AWS Konto pro Region festgelegt.

API-Aktionskategorie Aktionen Maximale Kapazität des Buckets (oder Burst-Rate) Nachfüllrate des Buckets (oder konstante Rate)
Aktionen zum Ändern des Clusters
  • CreateCluster

  • DeleteCluster

  • PutClusterCapacityProviders

  • UpdateCluster

  • UpdateClusterSettings

20 1
Leseaktionen im Cluster
  • DescribeClusters

  • ListClusters

50 20
Aktionen zur Änderung der Aufgabendefinition
  • DeregisterTaskDefinition

  • RegisterTaskDefinition

20 1
Aktionen zum Lesen der Aufgabendefinition
  • DescribeTaskDefinition

  • ListTaskDefinitions

  • ListTaskDefinitionFamilies

50 20
Aktionen zum Löschen von Aufgabendefinitionen
  • DeleteTaskDefinitions

5 1
Aktionen zum Ändern des Kapazitätsanbieters
  • CreateCapacityProvider

  • DeleteCapacityProvider

  • UpdateCapacityProvider

10 1
Leseaktionen des Kapazitätsanbieters
  • DescribeCapacityProviders

50 20
Aktionen mit dem Schlagwort „Ändern“
  • TagResource

  • UntagResource

20 10
Leseaktionen mit Tags versehen
  • ListTagsForResource

50 20
Aktionen einrichten und ändern
  • DeleteAccountSetting

  • PutAccountSetting

  • PutAccountSettingDefault

10 1
Leseaktionen einrichten
  • ListAccountSettings

50 20
Aktionen zum Ändern von Clusterressourcen
  • DeleteAttributes

  • DeregisterContainerInstance

  • ExecuteCommand

  • PutAttributes

  • RunTask1

  • StartTask

  • StopTask

  • UpdateContainerAgent

  • UpdateContainerInstancesStates

100 40
Aktionen zum Lesen von Clusterressourcen
  • DescribeContainerInstances

  • DescribeTasks

  • ListAttributes

  • ListContainerInstances

  • ListTasks

100 20
Aktionen zum Ändern von Agenten
  • RegisterContainerInstance

  • SubmitAttachmentStateChanges

  • SubmitContainerStateChange

  • SubmitTaskStateChange

200 120
Aktionen zum Ändern des Dienstes
  • CreateService

  • DeleteService

  • UpdateService

50 5
Aktionen zum Lesen des Dienstes
  • DescribeServices

  • ListServices

100 20
Aktionen zur Bereitstellung von Diensten
  • DescribeServiceDeployments

  • ListServiceDeployments

50 20
Aktionen zur Revision des Dienstes
  • DescribeServiceRevisions

50 20

Aktionen zum Schutz von Aufgaben

  • UpdateTaskProtection

  • GetTaskProtection

200 80
Leseaktionen für Ressourcen des Clusterdienstes
  • ListServicesByNamespace

10 1

1 drosselt die Amazon RunTask ECS-API AWS Fargate zusätzlich auf die hier im Amazon ECS Developer Guide aufgeführten Tarife.

Anpassung der API-Drosselungsquoten

Sie können eine Erhöhung der API-Drosselungsquoten für Ihr Konto beantragen. AWS Um eine Kontingentanpassung anzufordern, kontaktieren Sie das AWS Support -Center.

Umgang mit der API-Drosselung

Sie können eine Strategie zur Wiederholung von Fehlern und ein exponentielles Back-off implementieren, um die Auswirkungen von Drosselungsfehlern auf Ihre Workloads zu vermeiden. Wenn Sie AWS SDK verwenden, ist die automatische Wiederholungslogik bereits integriert und konfigurierbar. Weitere Informationen finden Sie in den folgenden Ressourcen: