Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Limitazione delle richieste per l'API Amazon ECS
Amazon Elastic Container Service limita tutte le richieste API per ogni AWS account in base alla regione. Lo facciamo per garantire prestazioni costanti e un uso equo del servizio per tutti i clienti Amazon ECS. La limitazione garantisce che le chiamate all'API Amazon ECS non superino le quote di richieste API massime consentite sia per Amazon ECS che per gli altri AWS servizi con cui si integra. Le chiamate API sono soggette alle quote di richiesta indipendentemente dal fatto che provengano da:
-
Un'applicazione di terze parti
-
Uno strumento da riga di comando
-
La console Amazon ECS
Se superi una quota di limitazione delle API, ricevi il ThrottlingException codice di errore.
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)
Come viene applicato il throttling
Amazon ECS utilizza l'algoritmo token bucket
Amazon ECS esamina la frequenza di invio di richieste API per tutte le API Amazon ECS del tuo account, per regione, e applica due tipi di quote di limitazione delle API: sostened e burst. La velocità sostenuta è il numero medio di richieste API consentite al secondo nel tempo per un'operazione. La frequenza di burst è il numero massimo di richieste API consentite in un secondo. Con burst, puoi effettuare periodicamente un numero maggiore di richieste API rispetto alla frequenza sostenuta. Successivamente, Amazon ECS limita le richieste API successive fino a quando la frequenza di richieste API consentita nel tempo si stabilizza alla velocità sostenuta. Nell'algoritmo del token bucket, la capacità massima del bucket indica la frequenza di burst e la frequenza di ricarica del bucket è la velocità sostenuta. Utilizzeremo questi termini per fornirti un'illustrazione della limitazione delle richieste API di Amazon ECS nell'esempio seguente.
Sei limitato al numero di richieste API che effettui e ogni richiesta rimuove un token dal bucket di token. Ad esempio, la dimensione del bucket per le azioni di lettura del cluster, come l'DescribeClustersAPI, è di 50 token, quindi puoi effettuare fino a 50 DescribeClusters richieste in un secondo. Se superi le 50 richieste in un secondo, subisci una limitazione e le richieste rimanenti entro quel secondo hanno esito negativo.
I secchi si ricaricano automaticamente a una velocità prestabilita. Se il bucket è al di sotto della sua capacità massima, gli viene aggiunto un determinato numero di token ogni secondo fino a raggiungere la capacità massima. Se il secchio è pieno quando arrivano i gettoni di ricarica, questi vengono scartati. Il bucket non può contenere più del numero massimo di token. Ad esempio, la dimensione del bucket per le azioni di lettura del cluster, come l'DescribeClustersAPI, è di 50 token e la frequenza di ricarica è di 20 token al secondo. Se effettui 50 richieste DescribeClusters API in un secondo, il bucket viene immediatamente ridotto a zero token. Il bucket viene quindi ricaricato con 20 token ogni secondo, fino a raggiungere la capacità massima di 50 token. Ciò significa che il secchio precedentemente vuoto raggiunge la sua capacità massima dopo 2,5 secondi.
Non è necessario attendere che il bucket sia completamente pieno prima di poter effettuare richieste API. È possibile utilizzare i token man mano che vengono aggiunti al bucket. Se si utilizzano immediatamente i gettoni di ricarica, il secchio non raggiunge la sua capacità massima. Ad esempio, la dimensione del bucket per le azioni di lettura del cluster, come l'DescribeClustersAPI, è di 50 token e la frequenza di ricarica è di 20 token al secondo. Se esaurisci il bucket effettuando 50 richieste API in un secondo, puoi continuare a fare 20 richieste API al secondo. Il bucket può essere ricaricato fino alla capacità massima solo se effettui meno di 20 richieste API al secondo.
Richiedi le dimensioni dei token bucket e le tariffe di ricarica
Ai fini della limitazione della frequenza delle richieste, le azioni API sono raggruppate in categorie. Tutte le azioni API di una categoria condividono lo stesso bucket di token. Ad esempio, tutte DescribeClusters le ListClusters API condividono il bucket Cluster read actions, per il quale la capacità è 50 e la frequenza di ricarica è 20. Ciò significa che il numero cumulativo di richieste API per tutte le azioni di lettura del cluster è limitato dalla stessa quota di burst rate di 50 richieste API. Pertanto, è possibile effettuare 25 DescribeClusters e 25 richieste ListClusters API in un secondo, oppure 30 DescribeClusters e 20ListClusters, o 50 DescribeClusters e 0ListClusters, o 0 DescribeClusters e 50ListClusters, ma non è possibile effettuare 50 DescribeClusters e 50 ListClusters richieste contemporaneamente. La velocità sostenuta viene applicata in modo analogo cumulativamente a tutte le richieste API all'interno di un bucket.
La tabella seguente mostra la capacità del bucket (o burst) e la frequenza di ricarica (o sostenuta) per tutte le regioni. AWS Tutte le categorie di azioni API applicano quote tariffarie per ogni AWS account in base alla regione.
| Categoria di azioni API | Azioni | Capacità massima del bucket (o velocità di espansione) | Velocità di ricarica del bucket (o velocità sostenuta) |
|---|---|---|---|
| Azioni di modifica del cluster |
|
20 | 1 |
| Azioni di lettura del cluster |
|
50 | 20 |
| Definizione delle attività, azioni di modifica |
|
20 | 1 |
| Definizione delle attività, azioni di lettura |
|
50 | 20 |
| Azioni di eliminazione delle definizioni delle attività |
|
5 | 1 |
| Azioni di modifica del provider di capacità |
|
10 | 1 |
| Azioni di lettura del provider di capacità |
|
50 | 20 |
| Azioni di modifica dei tag |
|
20 | 10 |
| Tagga le azioni di lettura |
|
50 | 20 |
| Impostazione delle azioni di modifica |
|
10 | 1 |
| Impostazione delle azioni di lettura |
|
50 | 20 |
| Azioni di modifica delle risorse del cluster |
|
100 | 40 |
| Azioni di lettura delle risorse del cluster |
|
100 | 20 |
| Azioni di modifica dell'agente |
|
200 | 120 |
| Azioni di modifica del servizio |
|
50 | 5 |
| Azioni di lettura del servizio |
|
100 | 20 |
| Azioni di implementazione del servizio |
|
50 | 20 |
| Azioni di revisione del servizio |
|
50 | 20 |
|
Azioni di protezione delle attività |
|
200 | 80 |
| Azioni di lettura delle risorse del servizio cluster |
|
10 | 1 |
1 AWS Fargate limita inoltre l'RunTaskAPI Amazon ECS alle tariffe elencate qui nella Amazon ECS Developer Guide.
Regolazione delle quote di limitazione delle API
Puoi richiedere un aumento delle quote di limitazione delle API per il tuo account. AWS Per richiedere un adeguamento delle quote, contatta il centro Supporto AWS
Gestione della limitazione delle API
Puoi implementare una strategia di ripetizione degli errori e di back-off esponenziale per evitare l'impatto degli errori di limitazione sui carichi di lavoro. Se utilizzi AWS SDK, la logica di ripetizione automatica è già integrata e configurabile. Puoi fare riferimento alle seguenti risorse per maggiori dettagli:
-
Tentativi di errore e backoff esponenziale AWS nella Guida di riferimento generale AWS
-
Post di blog con backoff e jitter esponenziali
-
Articolo relativo a timeout, nuovi tentativi e backoff with jitter
nella libreria di Amazon Builder