Wie verhindere ich den Fehler "Rate exceeded" (Rate-überschritten) in CloudFormation?

Lesedauer: 2 Minute
0

Manchmal erhalte ich den Fehler "Rate exceeded" (Rate-überschritten), wenn ich AWS CloudFormation verwende. Wie verhindere ich, dass dieser Fehler auftritt?

Kurzbeschreibung

Der Rate-überschritten-Fehler tritt auf, wenn API-Aufrufe an einen AWS-Service die maximal zulässigen API-Anforderungen überschreiten und die API-Aufrufe gedrosselt werden. Im Allgemeinen sind diese Fehler vorübergehend und lösen sich von selbst auf, wenn die Anzahl der API-Aufrufe abnimmt.

Um den Rate-überschritten-Fehler zu verhindern, können Sie:

  • Exponentielles Backoff implementieren
  • Stacks nacheinander erstellen oder aktualisieren
  • Das DependsOn-Attribut verwenden
  • Eine Kontingent-Erhöhung beantragen

Auflösung

Exponentielles Backoff implementieren

Wenn Sie AWS-API-Endpunkte verwenden, implementieren Sie ein exponentielles Backoff, um die Anzahl der getätigten API-Aufrufe zu verringern.

Der folgende Beispiel-Pseudocode für einen DescribeStacks-API-Aufruf ist so konfiguriert, dass der API-Aufruf nach einer bestimmten Zeit erneut versucht wird:

{
Make ‘DescribeStacks’ API call 

if throttled: wait 2 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 4 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 8 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 16 sec; Make ‘DescribeStacks’ API call 
if throttled: wait 32 sec; Make ‘DescribeStacks’ API call 
}

Stacks nacheinander erstellen oder aktualisieren

Das gleichzeitige Erstellen oder Aktualisieren mehrerer CloudFormation-Stacks kann dazu führen, dass viele API-Aufrufe gleichzeitig ausgeführt werden. Um zu verhindern, dass die API-Aufrufe die maximal zulässigen API-Anforderungen überschreiten, erstellen oder aktualisieren Sie jeweils einen Stack.

Das DependsOn-Attribut verwenden

Sofern keine Abhängigkeit zwischen Ressourcen definiert ist, erstellt und aktualisiert CloudFormation Ressourcen gleichzeitig. Das DependsOn-Attribut definiert Abhängigkeiten zwischen Ressourcen, um gleichzeitige Aktualisierungen zu steuern.

Mit dem DependsOn-Attribut können Sie angeben, wann jede abhängige Ressource erstellt oder aktualisiert wird. Wenn Ressource B beispielsweise von Ressource A abhängig ist, können Sie angeben, dass Ressource A vor Ressource B erstellt oder aktualisiert wird. Dadurch wird die Anzahl der gleichzeitig ausgeführten API-Aufrufe begrenzt und das Auftreten von Drosselungen verringert. Sie können das DependsOn-Attribut auch mit verschachtelten Stacks verwenden.

Eine Kontingent-Erhöhung beantragen

Wenn die vorherigen Lösungen für Ihre Situation nicht funktionieren, können Sie eine Kontingent-Erhöhung beantragen. Bevor Sie eine Kontingent-Erhöhung beantragen, identifizieren Sie den API-Aufruf, um zu ermitteln, welcher die Aufruf-Rate überschreitet.

Geben Sie in Ihrem Antrag auf eine Kontingent-Erhöhung Ihre AWS-Region, den Zeitrahmen der API-Drosselung und den Grund für die Erhöhung an.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren