Tentativi della AWS CLI nella AWS CLI
Questo argomento descrive come la AWS CLI potrebbe vedere le chiamate a servizi AWS non riusciti a causa di problemi imprevisti. Questi problemi possono verificarsi sul lato server o potrebbero non riuscire a causa della limitazione della velocità imposta dal servizio AWS che stai tentando di chiamare. Questi tipi di errori di solito non richiedono una gestione speciale e la chiamata viene rieffettuata automaticamente, spesso dopo un breve periodo di attesa. La AWS CLI fornisce molte funzionalità che aiutano a ritentare le chiamate dei client ai servizi AWS quando si verificano questi tipi di errori o eccezioni.
Argomenti
Modalità di ripetizione disponibili
La AWS CLI presenta diverse modalità tra cui scegliere a seconda della versione:
Modalità di riprova standard (impostazione predefinita)
La modalità Standard è un set standard di regole di riprova tra gli AWS SDK con più funzionalità rispetto alla versione precedente ed è la modalità predefinita della AWS CLI. La modalità standard è stata creata per la AWS CLI versione 2 ed è stata sottoposta al backport nella AWS CLI versione 1. Le funzionalità della modalità standard includono:
-
Il valore predefinito è 2 per il numero massimo di tentativi di riprova, per un totale di 3 tentativi di chiamata. Questo valore può essere sovrascritto tramite il parametro di configurazione
max_attempts. -
Riprova i tentativi per il seguente elenco esteso di errori/eccezioni:
-
Errori ed eccezioni transitori
-
RequestTimeout -
RequestTimeoutException -
PriorRequestNotComplete -
ConnectionError -
HTTPClientError
-
-
Errori e eccezioni di limitazione/limitazione (della larghezza di banda della rete) lato servizio:
-
Throttling -
ThrottlingException -
ThrottledException -
RequestThrottledException -
TooManyRequestsException -
ProvisionedThroughputExceededException -
TransactionInProgressException -
RequestLimitExceeded -
BandwidthLimitExceeded -
LimitExceededException -
RequestThrottled -
SlowDown -
EC2ThrottledException
-
-
-
Riprova con codici di errore transitori e non descrittivi. In particolare, questi codici di stato HTTP: 500, 502, 503, 504.
-
Qualsiasi nuovo tentativo includerà un backoff esponenziale di un fattore base pari a 2 per un tempo di backoff massimo di 20 secondi.
La modalità Legacy utilizza un gestore di tentativi precedente con funzionalità limitate che includono:
-
Il valore predefinito è 4 per il numero massimo di tentativi di riprova, per un totale di 5 tentativi di chiamata. Questo valore può essere sovrascritto tramite il parametro di configurazione
max_attempts. -
DynamoDB ha un valore predefinito di 9 per il numero massimo di tentativi di riprova, per un totale di 10 tentativi di chiamata. Questo valore può essere sovrascritto tramite il parametro di configurazione
max_attempts. -
Riprova i tentativi per il seguente numero limitato di errori/eccezioni:
-
Errori generali di socket/connessione:
-
ConnectionError -
ConnectionClosedError -
ReadTimeoutError -
EndpointConnectionError
-
-
Errori e eccezioni di limitazione/limitazione (della larghezza di banda della rete) lato servizio:
-
Throttling -
ThrottlingException -
ThrottledException -
RequestThrottledException -
ProvisionedThroughputExceededException
-
-
-
Tentativi su diversi codici di stato HTTP, tra cui 429, 500, 502, 503, 504 e 509.
-
Qualsiasi nuovo tentativo includerà un backoff esponenziale di un fattore base pari a 2.
Modalità di riprova adattiva
avvertimento
La modalità adattiva è una modalità sperimentale ed è soggetta a modifiche, sia nelle funzionalità che nel comportamento.
La modalità di riprova Adaptive comporta la ripetizione sperimentale che include tutte le funzionalità della modalità standard. Oltre alle funzionalità della modalità standard, la modalità adattiva introduce anche la limitazione della velocità lato client mediante l’uso di un token bucket e di variabili con limite di velocità che vengono aggiornate dinamicamente a ogni nuovo tentativo. Questa modalità offre flessibilità nei tentativi lato client e si adatta alla risposta allo stato di errore/eccezione di un servizio AWS.
Ad ogni nuovo tentativo, la modalità adattiva modifica le variabili del limite di velocità in base all’errore, all’eccezione o al codice di stato HTTP presentato nella risposta del servizio AWS. Queste variabili relative al limite di velocità vengono quindi utilizzate per calcolare una nuova velocità di chiamata per il client. Ogni eccezione/errore o risposta HTTP non riuscita (fornita nell’elenco precedente) di un servizio AWS aggiorna le variabili del limite di frequenza man mano che si verificano nuovi tentativi fino al raggiungimento del successo, all’esaurimento del bucket token o al raggiungimento del valore massimo di tentativi configurato.
Configurazione di una modalità di riprova
La AWS CLI include una varietà di configurazioni di nuovi tentativi e metodi di configurazione da considerare durante la creazione dell’oggetto client.
Metodi di connessione disponibili
Nella AWS CLI, gli utenti possono configurare nuovi tentativi nei modi seguenti:
-
Variabili di ambiente
-
File di configurazione della AWS CLI
Gli utenti possono personalizzare le seguenti opzioni per la riprova:
-
Modalità Riprova: specifica la modalità di riprova utilizzata dalla AWS CLI. Come descritto in precedenza, sono disponibili tre modalità di riprova: legacy, standard e adattiva. Il valore predefinito per la . La AWS CLI versione 2 è standard.
-
Numero massimo di tentativi: specifica il valore massimo di tentativi utilizzato dal gestore dei tentativi della AWS CLI, in cui la chiamata iniziale viene conteggiata ai fini del valore fornito. Il valore predefinito si basa sulla modalità di riprova.
Definizione di una configurazione di una riprova nelle variabili di ambiente
Per definire la configurazione dei nuovi tentativi per la AWS CLI, aggiorna le variabili di ambiente del sistema operativo.
Le variabili di ambiente della riprova sono:
-
AWS_RETRY_MODE -
AWS_MAX_ATTEMPTS
Per ulteriori informazioni sulle variabili di ambiente, consulta Configurazione delle variabili d’ambiente per AWS CLI.
Definizione di una nuova configurazione nel file di configurazione AWS
Per modificare la configurazione del nuovo tentativo, aggiorna il file di configurazione globale AWS. La posizione predefinita per il file di configurazione AWS è ~/.aws/config.
Di seguito è riportato un esempio di un file AWS:
[default] retry_mode = standard max_attempts = 6
Per ulteriori informazioni sui file di configurazione, consulta Impostazioni dei file di configurazione e delle credenziali nella AWS CLI.
Visualizzazione dei log dei tentativi di riprova
La AWS CLI utilizza la metodologia di riprova e la registrazione di log di Boto3. È possibile utilizzare l’opzione --debug su qualsiasi comando per ricevere i log di debug. Per informazioni su come utilizzare l’opzione --debug, consulta Opzioni della riga di comando nella AWS CLI.
Se cerchi “retry” nei log di debug, troverai le informazioni sui nuovi tentativi di cui hai bisogno. Le voci di log del client relative ai tentativi dipendono dalla modalità di riprova abilitata.
Modalità legacy:
I messaggi di riprova vengono generati da botocore.retryhandler. Vedrai uno dei tre messaggi seguenti:
-
No retry needed -
Retry needed, action of:<action_name> -
Reached the maximum number of retry attempts:<attempt_number>
Modalità standard o adattiva:
I messaggi di riprova vengono generati da botocore.retries.standard. Vedrai uno dei tre messaggi seguenti:
-
No retrying request -
Retry needed, retrying request after delay of:<delay_value> -
Retry needed but retry quota reached, not retrying request
Per il file di definizione completo dei tentativi di botocore, consulta _retry.json