View a markdown version of this page

Controle de utilização de solicitações para a API do Amazon ECS - Amazon Elastic Container Service

Controle de utilização de solicitações para a API do Amazon ECS

O Amazon Elastic Container Service controla a utilização de todas as solicitações de API para cada conta da AWS com base na região. Fazemos isso para garantir um desempenho consistente e uma utilização justa do serviço para todos os clientes do Amazon ECS. O controle de utilização garante que as chamadas para a API do Amazon ECS não ultrapassem as cotas máximas de solicitação de API permitidas para o Amazon ECS e para os outros serviços da AWS com os quais ele tem integração. As chamadas de API estão sujeitas às cotas de solicitação, independentemente de serem originadas de:

  • Aplicativos de terceiros

  • Uma ferramentas da linha de comando

  • O console do Amazon ECS

Se você exceder a cota de controle de utilização de API, receberá o código de erro ThrottlingException.

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)

Como o controle de utilização é aplicado

O Amazon ECS usa o algoritmo de bucket de tokens para implementar o controle de utilização de API. Com esse algoritmo, sua conta tem um bucket que contém um número específico de tokens. O número de tokens no bucket representa sua cota de controle de utilização a qualquer segundo.

O Amazon ECS inspeciona a taxa de envio de solicitações de API para todas as APIs do Amazon ECS em sua conta, por região, e aplica dois tipos de cotas de controle de utilização de API: sustentada e intermitente. A taxa sustentada é o número médio de solicitações de API permitido por segundo durante o tempo para uma operação. A taxa de intermitência é o número máximo de solicitações de API permitido em qualquer segundo. Com a intermitência, você pode fazer um número maior de solicitações de API periodicamente comparado com a taxa sustentada. Depois disso, o Amazon ECS faz o controle de utilização das solicitações subsequentes de API até que a taxa de solicitações de API permitida ao longo do tempo se estabilize na taxa sustentada. No algoritmo do bucket de tokens, a capacidade máxima do bucket significa a taxa de intermitência e a taxa de recarga do bucket é a taxa sustentada. Usaremos esses termos para apresentar a você uma ilustração do controle de utilização de solicitação da API do Amazon ECS no exemplo a seguir.

O sistema aplica o controle de utilização do número de solicitações de API que você faz, e cada solicitação remove um token do seu bucket de tokens. Por exemplo, o tamanho do bucket para Ações de leitura do cluster, como a API DescribeClusters, é de 50 tokens, então você pode fazer até 50 solicitações DescribeClusters em 1 segundo. Se ultrapassar as 50 solicitações em 1 segundo, o sistema aplicará o controle de utilização e as solicitações restantes nesse segundo falharão.

Os buckets são recarregados automaticamente a uma taxa definida. Se o bucket ficar abaixo da capacidade máxima, um determinado número de tokens será adicionado novamente a ele a cada segundo até atingir sua capacidade máxima. Se o bucket estiver cheio quando os tokens de recarga forem adicionados, eles serão descartados. O bucket não pode reter mais do que seu número máximo de tokens. Por exemplo, o tamanho do bucket para Ações de leitura do cluster, como a API DescribeClusters, é de 50 tokens, e a taxa de recarga é 20 tokens por segundo. Se você fizer 50 solicitações da API DescribeClusters em 1 segundo, o bucket será imediatamente reduzido para 0 tokens. Em seguida, o bucket será recarregado com 20 tokens a cada segundo até atingir sua capacidade máxima de 50 tokens. Isso significa que o bucket, antes vazio, atingirá sua capacidade máxima após 2,5 segundos.

Para fazer solicitações de API, não é necessário esperar que o bucket esteja completamente cheio. Você pode usar tokens à medida que eles são adicionados ao bucket. Se você usar imediatamente os tokens de recarga, o bucket não atingirá sua capacidade máxima. Por exemplo, o tamanho do bucket para Ações de leitura do cluster, como a API DescribeClusters, é de 50 tokens, e a taxa de recarga é 20 tokens por segundo. Se você esgotar o bucket fazendo 50 solicitações de API em 1 segundo, poderá continuar fazendo 20 solicitações de API por segundo. O bucket só pode ser recarregado até a capacidade máxima quando você faz menos de vinte solicitações de API por segundo.

Tamanhos de buckets e taxas de recarga do bucket de tokens

Para fins de limitação da taxa de solicitação, as ações da API são agrupadas em categorias. Todas as ações de API em uma categoria compartilham o mesmo bucket de tokens. Por exemplo, as APIs DescribeClusters e ListClusters compartilham o bucket Ações de leitura do cluster, para o qual a capacidade é 50 e a taxa de recarga é 20. Isso significa que o número cumulativo de solicitações de API para todas as Ações de leitura do cluster é limitado pela mesma cota de taxa de intermitência de 50 solicitações de API. Consequentemente, você pode fazer 25 solicitações de API DescribeClusters e 25 solicitações de API ListClusters em 1 segundo, ou 30 DescribeClusters e 20 ListClusters, ou 50 DescribeClusters e 0 ListClusters, ou 0 DescribeClusters e 50 ListClusters, mas não pode fazer 50 DescribeClusters e 50 ListClusters solicitações ao mesmo tempo. A taxa sustentada também é aplicada cumulativamente a todas as solicitações de API em um bucket.

A tabela a seguir mostra a capacidade (ou intermitência) do bucket e a taxa de recarga (ou sustentada) para todas as regiões da AWS. Todas as categorias de ação de API impõem cotas de taxas para cada conta da AWS de acordo com a região.

Categoria de ações de API Ações Capacidade máxima do bucket (ou taxa de intermitência) Taxa de reabastecimento do bucket (ou taxa sustentada)
Ações de modificação de cluster
  • CreateCluster

  • DeleteCluster

  • PutClusterCapacityProviders

  • UpdateCluster

  • UpdateClusterSettings

20 1
Ações de leitura de cluster
  • DescribeClusters

  • ListClusters

50 20
Ações de modificação de definição de tarefa
  • DeregisterTaskDefinition

  • RegisterTaskDefinition

20 1
Ações de leitura de definição de tarefa
  • DescribeTaskDefinition

  • ListTaskDefinitions

  • ListTaskDefinitionFamilies

50 20
Ações de exclusão de definição de tarefa
  • DeleteTaskDefinitions

5 1
Ações de modificação de provedor de capacidade
  • CreateCapacityProvider

  • DeleteCapacityProvider

  • UpdateCapacityProvider

10 1
Ações de leitura de provedor de capacidade
  • DescribeCapacityProviders

50 20
Ações de modificação de tag
  • TagResource

  • UntagResource

20 10
Ações de leitura de tag
  • ListTagsForResource

50 20
Ações de modificação de configuração
  • DeleteAccountSetting

  • PutAccountSetting

  • PutAccountSettingDefault

10 1
Ações de leitura de configuração
  • ListAccountSettings

50 20
Ações de modificação de recurso de cluster
  • DeleteAttributes

  • DeregisterContainerInstance

  • ExecuteCommand

  • PutAttributes

  • RunTask1

  • StartTask

  • StopTask

  • UpdateContainerAgent

  • UpdateContainerInstancesStates

100 40
Ações de leitura de recursos de cluster
  • DescribeContainerInstances

  • DescribeTasks

  • ListAttributes

  • ListContainerInstances

  • ListTasks

100 20
Ações de modificação de agente
  • RegisterContainerInstance

  • SubmitAttachmentStateChanges

  • SubmitContainerStateChange

  • SubmitTaskStateChange

200 120
Ações de modificação de serviço
  • CreateService

  • DeleteService

  • UpdateService

50 5
Ações de leitura de serviço
  • DescribeServices

  • ListServices

100 20
Ações de implantação de serviço
  • DescribeServiceDeployments

  • ListServiceDeployments

50 20
Ações de revisão de serviço
  • DescribeServiceRevisions

50 20

Ações de proteção de tarefa

  • UpdateTaskProtection

  • GetTaskProtection

200 80
Ações de leitura de recursos do serviço de cluster
  • ListServicesByNamespace

10 1

1 AWS Fargate também faz o controle de utilização da API RunTask do Amazon ECS com as taxas listadas aqui no Guia do desenvolvedor do Amazon ECS.

Ajustar as cotas de controle de utilização da API

É possível solicitar um aumento das cotas de controle de utilização de API para sua conta da AWS. Para solicitar um ajuste de cota, entre em contato com a Central do AWS Support.

Tratamento do controle de utilização de API

Você pode implementar uma nova tentativa de erro e uma estratégia de recuo exponencial para evitar o impacto de erros do controle de utilização em suas workloads. Caso use o AWS SDK, a lógica de repetição automática já está incorporada e configurável. Consulte os seguintes recursos para obter mais detalhes: