Limitação de solicitações para a Amazon EC2 API - Amazon Elastic Compute Cloud

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Limitação de solicitações para a Amazon EC2 API

A EC2 Amazon limita as EC2 API solicitações para cada AWS conta por região. Fazemos isso para ajudar no desempenho do serviço e para garantir o uso justo para todos os EC2 clientes da Amazon. A limitação garante que as solicitações para a Amazon EC2 API não excedam os limites máximos de API solicitação permitidos. APIas solicitações estão sujeitas aos limites de solicitação, independentemente de serem originárias de:

  • Aplicativos de terceiros

  • Uma ferramentas da linha de comando

  • O EC2 console da Amazon

Se você exceder um limite de API limitação, receberá o código de RequestLimitExceeded erro.

Como o controle de utilização é aplicado

A Amazon EC2 usa o algoritmo de token bucket para implementar a API limitação. 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 seu limite de limitação a qualquer segundo.

A Amazon EC2 implementa dois tipos de API limitação:

Limitação de intervalo de solicitações

Com a limitação da taxa de solicitação, cada uma API é avaliada individualmente e você é limitado pelo número de solicitações feitas por vez. API Cada solicitação que você faz remove um token API do bucket. Por exemplo, o tamanho do token bucket paraDescribeHosts, uma ação sem API mutação, é de 100 tokens. Você pode fazer até 100 DescribeHosts solicitações em um segundo. Se você exceder 100 solicitações em um segundo, isso será limitado API e as solicitações restantes nesse segundo falharão; no entanto, as solicitações de outras não API serão afetadas.

Os buckets são recarregados automaticamente a uma taxa definida. Se o bucket estiver abaixo de sua capacidade máxima, um determinado número de tokens será adicionado a ele a cada segundo até atingir sua capacidade máxima. Se o balde estiver cheio quando os tokens de recarga chegarem, eles serão descartados. O bucket não pode conter mais do que seu número máximo de tokens. Por exemplo, o tamanho do bucket paraDescribeHosts, uma ação sem API mutação, é de 100 tokens e a taxa de recarga é de 20 tokens por segundo. Se você fizer 100 DescribeHosts solicitações em um segundo, o bucket será reduzido para zero (0) tokens. O balde é então reabastecido com 20 fichas a cada segundo, até atingir sua capacidade máxima de 100 fichas. Isso significa que um bucket vazio atinge sua capacidade máxima após 5 segundos se nenhuma solicitação for feita durante esse período.

Você não precisa esperar que o bucket esteja completamente cheio para poder fazer API solicitações. Você pode usar fichas de recarga à medida que elas são adicionadas ao balde. Se você usar imediatamente os tokens de recarga, o balde não atingirá sua capacidade máxima. Por exemplo, o tamanho do bucket paraDescribeHosts, uma ação sem API mutação, é de 100 tokens e a taxa de recarga é de 20 tokens por segundo. Se você esgotar o bucket fazendo 100 API solicitações em um segundo, poderá continuar fazendo 20 API solicitações por segundo usando os tokens de recarga à medida que forem adicionados ao bucket. O bucket pode ser reabastecido até a capacidade máxima somente se você fizer menos de 20 API solicitações por segundo.

Limitação da taxa de recursos

Algumas API ações, como RunInstances eTerminateInstances, conforme descrito na tabela a seguir, usam a limitação da taxa de recursos além da limitação da taxa de solicitação. Essas API ações têm um repositório de tokens de recursos separado que se esgota com base no número de recursos afetados pela solicitação. Assim como os buckets de tokens de solicitação, os buckets de tokens de recursos têm um intervalo máximo que permite que você estoure e uma taxa de recarga que permite manter uma taxa constante de solicitações pelo tempo que for necessário. Se você exceder um limite de intervalo específico para umAPI, inclusive quando um compartimento ainda não tiver sido reabastecido para suportar a próxima API solicitação, a ação do API será limitada, mesmo que você não tenha atingido o limite total de API aceleração.

Por exemplo, o tamanho do bucket de tokens de recursos RunInstances é de 1000 tokens e a taxa de recarga é de dois tokens por segundo. Portanto, você pode iniciar imediatamente 1.000 instâncias usando qualquer número de API solicitações, como uma solicitação para 1.000 instâncias ou quatro solicitações para 250 instâncias. Depois que o bucket de tokens de recursos estiver vazio, você poderá iniciar até duas instâncias por segundo, usando uma solicitação para duas instâncias ou duas solicitações para uma instância.

Para obter mais informações, consulte Tamanhos de compartimentos de tokens de recursos e taxas de recarga.

Limites de controle de utilização

As seções a seguir descrevem os tamanhos do bucket de tokens de solicitação e do bucket de tokens de recursos e as taxas de recarga.

Solicite tamanhos de baldes de tokens e taxas de recarga

Para fins de limitação da taxa de solicitação, API as ações são agrupadas nas seguintes categorias:

  • Ações não mutantes — API ações que recuperam dados sobre recursos. Essa categoria geralmente inclui todas as Describe* List*Search*,, e Get* API açõesDescribeRouteTables, comoSearchTransitGatewayRoutes, GetIpamPoolCidrs e. Essas API ações geralmente têm os maiores limites de API limitação.

  • Ações não filtradas e não paginadas sem mutação — Um subconjunto específico de ações sem mutação que, quando API solicitadas sem especificar paginação ou filtro, usam tokens de um conjunto de tokens menor. É recomendável que você use paginação e filtragem para que os tokens sejam deduzidos do repositório de tokens padrão (maior).

  • Ações mutantes — API ações que criam, modificam ou excluem recursos. Essa categoria geralmente inclui todas as API ações que não são categorizadas como ações não mutantes, comoAllocateHosts, e. ModifyHosts CreateCapacityReservation Essas ações têm um limite de limitação menor do que as ações sem API mutação.

  • Ações que consomem muitos recursos — ações mutantes API que levam mais tempo e consomem mais recursos para serem concluídas. Essas ações têm um limite de limitação ainda menor do que as ações de mutação. Eles são estrangulados separadamente de outras ações mutantes.

  • Ações sem mutação do console — ações sem mutação que são API solicitadas no console da Amazon. EC2 Essas API ações são limitadas separadamente de outras ações não API mutantes.

  • Ações não categorizadas — São API ações que recebem seus próprios tamanhos de pacotes de tokens e taxas de recarga, embora, por definição, se encaixem em uma das outras categorias.

A tabela a seguir mostra os tamanhos dos repositórios de tokens de solicitação e as taxas de recarga para todas as AWS regiões.

APIcategoria de ação Ações Capacidade máxima do bucket Taxa de recarga do balde
Ações não mutantes

Todas as açõesDescribe*, List*Search*, e que não sejam Get* API ações não filtradas e não paginadas, não mutantes ou ações não categorizadas.

100 20
Ações não mutantes não filtradas e não paginadas
  • DescribeInstances

  • DescribeInstanceStatus

  • DescribeNetworkInterfaces

  • DescribeSecurityGroups

  • DescribeSnapshots

  • DescribeSpotInstanceRequests

  • DescribeVolumes

50 10
Ações mutantes

Todas as ações mutantes que não são API ações que consomem muitos recursos ou ações não categorizadas.

50 5
Ações que consomem muitos recursos
  • AcceptVpcPeeringConnection

  • AuthorizeSecurityGroupIngress

  • CancelSpotInstanceRequests

  • CreateKeyPair

  • CreateVpcPeeringConnection

  • DeleteVpcPeeringConnection

  • RejectVpcPeeringConnection

  • RevokeSecurityGroupIngress

  • RequestSpotInstances

50 5
Ações não mutantes do console
  • Describe*

  • Get*

100 10
Ações não categorizadas AcceptVpcEndpointConnections 10 1
AdvertiseByoipCidr 1 0.1
AssignIpv6Addresses 100 5
AssignPrivateIpAddresses 100 5
AssignPrivateNatGatewayAddress 10 1
AssociateEnclaveCertificateIamRole 10 1
AssociateIamInstanceProfile 100 5
AssociateNatGatewayAddress 10 1
AttachVerifiedAccessTrustProvider 10 2
CreateDefaultSubnet 1 1
CreateDefaultVpc 1 1
CopyImage 100 1
CreateLaunchTemplateVersion 100 5
CreateNatGateway 10 1
CreateNetworkInterface 100 5
CreateRestoreImageTask 50 0.1
CreateSnapshot 100 5
CreateSnapshots 100 5
CreateStoreImageTask 50 0.1
CreateTags 100 10
CreateVerifiedAccessEndpoint 20 4
CreateVerifiedAccessGroup 10 2
CreateVerifiedAccessInstance 10 2
CreateVerifiedAccessTrustProvider 10 2
CreateVolume 100 5
CreateVpcEndpoint 4 0.3
CreateVpcEndpointServiceConfiguration 10 1
DeleteNatGateway 10 1
DeleteNetworkInterface 100 5
DeleteSnapshot 100 5
DeleteTags 100 10
DeleteQueuedReservedInstances 5 5
DeleteVerifiedAccessEndpoint 20 4
DeleteVerifiedAccessGroup 10 2
DeleteVerifiedAccessInstance 10 2
DeleteVerifiedAccessTrustProvider 10 2
DeleteVolume 100 5
DeleteVpcEndpoints 4 0.3
DeleteVpcEndpointServiceConfigurations 10 1
DeprovisionByoipCidr 1 0.1
DeregisterImage 100 5
DetachVerifiedAccessTrustProvider 10 2
DescribeByoipCidrs 1 0,5
DescribeCapacityBlockOfferings 10 0,15
DescribeInstanceTopology 1 1
DescribeMovingAddresses 1 1
DescribeReservedInstancesOfferings 10 10
DescribeSpotFleetRequestHistory 100 5
DescribeSpotFleetInstances 100 5
DescribeSpotFleetRequests 50 3
DescribeStoreImageTasks 50 0,5
DescribeVerifiedAccessInstanceLoggingConfigurations 10 2
DisableFastLaunch 5 2
DisableImageBlockPublicAccess 1 0,1
DisableSnapshotBlockPublicAccess 1 0.1
DisassociateEnclaveCertificateIamRole 10 1
DisassociateIamInstanceProfile 100 5
DisassociateNatGatewayAddress 10 1
EnableFastLaunch 5 2
EnableImageBlockPublicAccess 1 0,1
EnableSnapshotBlockPublicAccess 1 0.1
GetAssociatedEnclaveCertificateIamRoles 10 1
ModifyImageAttribute 100 5
ModifyInstanceMetadataOptions 100 5
ModifyLaunchTemplate 100 5
ModifyNetworkInterfaceAttribute 100 5
ModifySnapshotAttribute 100 5
ModifyVerifiedAccessEndpoint 20 4
ModifyVerifiedAccessEndpointPolicy 20 4
ModifyVerifiedAccessGroup 10 2
ModifyVerifiedAccessGroupPolicy 20 4
ModifyVerifiedAccessInstance 10 2
ModifyVerifiedAccessInstanceLoggingConfiguration 10 2
ModifyVerifiedAccessTrustProvider 10 2
ModifyVpcEndpoint 4 0.3
ModifyVpcEndpointServiceConfiguration 10 1
MoveAddressToVpc 1 1
ProvisionByoipCidr 1 0.1
PurchaseCapacityBlock 10 0,15
PurchaseReservedInstancesOffering 5 5
RejectVpcEndpointConnections 10 1
RestoreAddressToClassic 1 1
RunInstances 5 2
StartInstances 5 2
TerminateInstances 100 5
UnassignPrivateIpAddresses 100 5
UnassignPrivateNatGatewayAddress 10 1
WithdrawByoipCidr 1 0.1

Tamanhos de compartimentos de tokens de recursos e taxas de recarga

A tabela a seguir lista os tamanhos dos buckets de tokens de recursos e as taxas de recarga para API ações que usam limitação de taxa de recursos.

APIação Capacidade máxima do bucket Taxa de recarga do balde
RunInstances 1000 2
TerminateInstances 1000 20
StartInstances 1000 2
StopInstances 1000 20

Limitação do API monitor

Você pode usar CloudWatch a Amazon para monitorar suas EC2 API solicitações da Amazon e coletar e rastrear métricas sobre a API limitação. Você também pode criar um alarme para avisá-lo quando estiver perto de atingir os limites de API limitação. Para obter mais informações, consulte Monitore EC2 API solicitações da Amazon usando a Amazon CloudWatch.

Tentativas repetidas e recuo exponencial

Talvez seu aplicativo precise repetir uma API solicitação. Por exemplo:

  • Para verificar se há uma atualização no status de um recurso

  • Para enumerar um grande número de recursos (por exemplo, todos os seus volumes)

  • Para repetir uma solicitação depois que ela falhar com um erro do servidor (5xx) ou um erro de limitação

No entanto, para um erro do cliente (4xx), você deve revisar a solicitação para corrigir o problema antes de tentar a solicitação novamente.

Alterações no status do recurso

Antes de iniciar a pesquisa para verificar se há atualizações de status, dê tempo para que a solicitação seja potencialmente concluída. Por exemplo, aguarde alguns minutos antes de verificar se sua instância está ativa. Ao iniciar a pesquisa, use um intervalo de espera apropriado entre solicitações sucessivas para diminuir a taxa de API solicitações. Para obter os melhores resultados, use um intervalo de latência crescente ou variável.

Como alternativa, você pode usar EventBridge a Amazon para notificá-lo sobre o status de alguns recursos. Por exemplo, você pode usar o evento EC2Instance State-Change Notification para notificá-lo sobre uma mudança de estado em uma instância. Para obter mais informações, consulte Automatizar a Amazon EC2 usando EventBridge.

Repetições

Quando você precisar pesquisar ou repetir uma API solicitação, recomendamos usar um algoritmo de recuo exponencial para calcular o intervalo de espera entre as solicitações. API A ideia por trás do recuo exponencial é usar esperas progressivamente mais longas entre as novas tentativas para respostas de erro consecutivas. Você deve implementar um intervalo máximo de atraso, bem como um número máximo de novas tentativas. Você também pode usar o jitter (atraso aleatório) para evitar colisões sucessivas. Para obter mais informações, consulte Tempos limite, novas tentativas e recuo com variação de sinal.

Cada um AWS SDK implementa a lógica de repetição automática. Para obter mais informações, consulte o comportamento de repetição no Guia de referência de ferramentas AWS SDKs e ferramentas.

Solicitar um aumento de limite de

Você pode solicitar um aumento nos limites de API limitação do seu. Conta da AWS

Para solicitar acesso a esse recurso
  1. AWS Support Centro aberto.

  2. Escolha Criar caso.

  3. Escolha Conta e faturamento.

  4. Em Serviço, escolha Informações gerais e Introdução.

  5. Em Categoria, escolha Uso AWS e serviços.

  6. Selecione Próxima etapa: informações adicionais.

  7. Em Subject (Assunto), insira Request an increase in my Amazon EC2 API throttling limits.

  8. Em Descrição, insira Please increase the API throttling limits for my account. Related page: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html. Inclua também as seguintes informações:

    • Uma descrição do tipo de caso de uso.

    • As regiões em que você precisa de um aumento.

    • A janela de uma hora, emUTC, quando ocorreu o pico de limitação ou uso (para calcular o novo limite de limitação).

  9. Escolha Próxima etapa: solucione ou entre em contato conosco.

  10. Na guia Fale conosco, escolha seu idioma de contato preferido e método de contato.

  11. Selecione Enviar.