AWS CLI-Wiederholungen - AWS Command Line Interface

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.

AWS CLI-Wiederholungen

In diesem Thema wird beschrieben, wie in der AWS CLI Aufrufe von AWS-Services aufgrund unerwarteter Probleme möglicherweise fehlschlagen. Diese Probleme können serverseitig auftreten oder auf eine Ratenbegrenzung des AWS-Services, den Sie aufrufen möchten, zurückzuführen sein. Solche Ausfälle erfordern in der Regel keine besondere Behandlung und der Aufruf wird, oft nach einer kurzen Wartezeit, automatisch erneut getätigt. Die AWS CLI bietet viele Funktionen, um Client-Aufrufe an AWS-Services zu wiederholen, wenn diese Art von Fehlern oder Ausnahmen auftritt.

Verfügbare Wiederholungsmodi

Legacy-Wiederholungsmodus

Der Legacy-Modus verwendet einen älteren Wiederholungs-Handler mit eingeschränkter Funktionalität, der Folgendes umfasst:

  • Einen Standardwert von 4 für maximale Wiederholungsversuche, was insgesamt 5 Aufrufversuche ergibt. Dieser Wert kann durch den Konfigurationsparameter max_attempts überschrieben werden.

  • Dynamo DB hat einen Standardwert von 9 für maximale Wiederholungsversuche, was insgesamt 10 Aufrufversuche ergibt. Dieser Wert kann durch den Konfigurationsparameter max_attempts überschrieben werden.

  • Wiederholungsversuche für die folgende begrenzte Anzahl von Fehlern/Ausnahmen:

    • Allgemeine Socket-/Verbindungsfehler:

      • ConnectionError

      • ConnectionClosedError

      • ReadTimeoutError

      • EndpointConnectionError

    • Serviceseitige Fehler und Ausnahmen durch Drosselung/Begrenzung:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • ProvisionedThroughputExceededException

  • Wiederholungsversuche für mehrere HTTP-Statuscodes, einschließlich 429, 500, 502, 503, 504 und 509.

  • Jeder Wiederholungsversuch enthält ein exponentielles Backoff um den Basisfaktor 2.

Standardmodus für die Wiederholung

Der Standardmodus ist ein Standardsatz von Wiederholungsregeln für die AWS SDKs mit mehr Funktionalität als der Legacy-Modus. Dieser Modus ist der Standardmodus für die AWS CLI Version 2. Der Standardmodus wurde für die AWS CLI Version 2 erstellt und wird auf die AWS CLI Version 1 zurückportiert. Die Funktionalität des Standardmodus umfasst:

  • Ein Standardwert von 2 für maximale Wiederholungsversuche, was insgesamt 3 Anrufversuche ergibt. Dieser Wert kann durch den Konfigurationsparameter max_attempts überschrieben werden.

  • Wiederholungsversuche für die folgende erweiterte Liste von Fehlern/Ausnahmen:

    • Transiente Fehler/Ausnahmen

      • RequestTimeout

      • RequestTimeoutException

      • PriorRequestNotComplete

      • ConnectionError

      • HTTPClientError

    • Serviceseitige Fehler und Ausnahmen durch Drosselung/Begrenzung:

      • Throttling

      • ThrottlingException

      • ThrottledException

      • RequestThrottledException

      • TooManyRequestsException

      • ProvisionedThroughputExceededException

      • TransactionInProgressException

      • RequestLimitExceeded

      • BandwidthLimitExceeded

      • LimitExceededException

      • RequestThrottled

      • SlowDown

      • EC2ThrottledException

  • Wiederholungsversuche für nicht beschreibende, transiente Fehlercodes. Insbesondere diese HTTP-Statuscodes: 500, 502, 503, 504.

  • Jeder Wiederholungsversuch beinhaltet ein exponentielles Backoff um einen Basisfaktor von 2 für eine maximale Backoff-Zeit von 20 Sekunden.

Adaptiver Wiederholungsmodus

Warnung

Der adaptive Modus ist ein experimenteller Modus und kann sich sowohl in den Funktionen als auch im Verhalten ändern.

Der adaptive Wiederholungsmodus ist ein experimenteller Wiederholungsmodus, der alle Funktionen des Standardmodus enthält. Zusätzlich zu den Standardmodusfunktionen führt der adaptive Modus auch die clientseitige Ratenbegrenzung durch die Verwendung eines Token-Buckets und Ratenbegrenzungsvariablen ein, die bei jedem Wiederholungsversuch dynamisch aktualisiert werden. Dieser Modus bietet Flexibilität bei clientseitigen Wiederholungsversuchen, die sich an die Fehler-/Ausnahmezustandsantwort eines AWS-Services anpasst.

Bei jedem neuen Wiederholungsversuch ändert der adaptive Modus die Ratenbegrenzungsvariablen basierend auf dem Fehler, der Ausnahme oder dem HTTP-Statuscode, der in der Antwort des AWS-Services angezeigt wird. Diese Ratenbegrenzungsvariablen werden dann verwendet, um eine neue Aufrufrate für den Client zu berechnen. Jede Antwort auf eine Ausnahme, einen Fehler oder einen erfolglosen HTTP-Statuscode (in der obigen Liste bereitgestellt) von einem AWS-Service aktualisiert die Ratenbegrenzungsvariablen bei Wiederholungsversuchen, bis der Erfolg erreicht ist, der Token-Bucket erschöpft ist oder der konfigurierte Wert für die maximale Anzahl von Versuchen erreicht ist.

Konfigurieren eines Wiederholungsversuchsmodus

Die AWS CLI enthält eine Vielzahl von Wiederholungskonfigurationen sowie Konfigurationsmethoden, die Sie beim Erstellen Ihres Clientobjekts berücksichtigen sollten.

Verfügbare Konfigurationsmethoden

In der AWS CLI können Wiederholungen auf folgende Weise konfiguriert werden:

  • Umgebungsvariablen

  • AWS CLI Konfigurationsdatei

Die folgenden Optionen für Wiederholungsversuche können angepasst werden:

  • Wiederholungsmodus – Gibt an, welchen Wiederholungsmodus die AWS CLI verwendet. Wie zuvor beschrieben, stehen drei Wiederholungsmodi zur Verfügung: Legacy, Standard und Adaptive. Der Standardwert für die AWS CLI Version 2 ist Standard.

  • Maximale Versuche – Gibt einen Wert für die maximale Anzahl von AWS CLI-Wiederholungsversuchen an, den der Wiederholungshandler verwendet, wobei der erste Aufruf auf den von Ihnen angegebenen Wert angerechnet wird. Der Standardwert ist 5.

Definieren einer Wiederholungskonfiguration in Ihren Umgebungsvariablen

Um Ihre Wiederholungskonfiguration für die AWS CLI zu definieren, aktualisieren Sie die Umgebungsvariablen Ihres Betriebssystems.

Die Umgebungsvariablen für den Wiederholungsversuch sind:

  • AWS_RETRY_MODE

  • AWS_MAX_ATTEMPTS

Weitere Informationen zu Umgebungsvariablen finden Sie unter Umgebungsvariablen zum Konfigurieren der AWS CLI.

Definieren einer Wiederholungskonfiguration in Ihrer AWS-Konfigurationsdatei

Um Ihre Wiederholungskonfiguration zu ändern, aktualisieren Sie Ihre globale AWS-Konfigurationsdatei. Der Standardspeicherort für die AWS-Konfigurationsdatei ist ~/.aws/config.

Folgendes ist ein Beispiel für den Inhalt einer AWS-Konfigurationsdatei:

[default] retry_mode = standard max_attempts = 6

Weitere Informationen zu Konfigurationsdateien finden Sie unter Einstellungen der Konfigurations- und Anmeldeinformationsdatei.

Anzeigen von Protokollen von Wiederholungsversuchen

Die AWS CLI verwendet die Wiederholungsmethodik und die Protokollierung von Boto3. Sie können die --debug-Option für einen beliebigen Befehl benutzen, um Debug-Protokolle zu empfangen. Weitere Informationen zur Verwendung der Option --debug finden Sie unter Befehlszeilenoptionen.

Wenn Sie in den Debug-Protokollen nach „retry“ suchen, finden Sie die erforderlichen Wiederholungsinformationen. Die Clientprotokolleinträge für Wiederholungsversuche hängen davon ab, welchen Wiederholungsmodus Sie aktiviert haben.

Legacy-Modus:

Wiederholungsmeldungen werden von botocore.retryhandler generiert. Es wird eine von drei Meldungen angezeigt:

  • No retry needed

  • Retry needed, action of: <action_name>

  • Reached the maximum number of retry attempts: <attempt_number>

Standard- oder adaptiver Modus:

Wiederholungsmeldungen werden von botocore.retries.standard generiert. Es wird eine von drei Meldungen angezeigt:

  • No retrying request

  • Retry needed, retrying request after delay of: <delay_value>

  • Retry needed but retry quota reached, not retrying request

Die vollständige Definitionsdatei der Botocore-Wiederholungen finden Sie unter _retry.json im Botocore-GitHub-Repository.