View a markdown version of this page

Limitazione delle richieste per l'API Amazon ECS - Amazon Elastic Container Service

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 per implementare il throttling delle API. Con questo algoritmo, il tuo account dispone di un bucket che contiene un numero specifico di token. Il numero di token nel bucket rappresenta la tua quota di throttling in un dato secondo.

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
  • CreateCluster

  • DeleteCluster

  • PutClusterCapacityProviders

  • UpdateCluster

  • UpdateClusterSettings

20 1
Azioni di lettura del cluster
  • DescribeClusters

  • ListClusters

50 20
Definizione delle attività, azioni di modifica
  • DeregisterTaskDefinition

  • RegisterTaskDefinition

20 1
Definizione delle attività, azioni di lettura
  • DescribeTaskDefinition

  • ListTaskDefinitions

  • ListTaskDefinitionFamilies

50 20
Azioni di eliminazione delle definizioni delle attività
  • DeleteTaskDefinitions

5 1
Azioni di modifica del provider di capacità
  • CreateCapacityProvider

  • DeleteCapacityProvider

  • UpdateCapacityProvider

10 1
Azioni di lettura del provider di capacità
  • DescribeCapacityProviders

50 20
Azioni di modifica dei tag
  • TagResource

  • UntagResource

20 10
Tagga le azioni di lettura
  • ListTagsForResource

50 20
Impostazione delle azioni di modifica
  • DeleteAccountSetting

  • PutAccountSetting

  • PutAccountSettingDefault

10 1
Impostazione delle azioni di lettura
  • ListAccountSettings

50 20
Azioni di modifica delle risorse del cluster
  • DeleteAttributes

  • DeregisterContainerInstance

  • ExecuteCommand

  • PutAttributes

  • RunTask1

  • StartTask

  • StopTask

  • UpdateContainerAgent

  • UpdateContainerInstancesStates

100 40
Azioni di lettura delle risorse del cluster
  • DescribeContainerInstances

  • DescribeTasks

  • ListAttributes

  • ListContainerInstances

  • ListTasks

100 20
Azioni di modifica dell'agente
  • RegisterContainerInstance

  • SubmitAttachmentStateChanges

  • SubmitContainerStateChange

  • SubmitTaskStateChange

200 120
Azioni di modifica del servizio
  • CreateService

  • DeleteService

  • UpdateService

50 5
Azioni di lettura del servizio
  • DescribeServices

  • ListServices

100 20
Azioni di implementazione del servizio
  • DescribeServiceDeployments

  • ListServiceDeployments

50 20
Azioni di revisione del servizio
  • DescribeServiceRevisions

50 20

Azioni di protezione delle attività

  • UpdateTaskProtection

  • GetTaskProtection

200 80
Azioni di lettura delle risorse del servizio cluster
  • ListServicesByNamespace

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: