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á.
Controle de utilização de solicitações de API do Amazon EC2
O Amazon EC2 limita as solicitações de API do EC2 para cada AWS conta por região. Fazemos isso para ajudar na performance do serviço e para garantir o uso justo para todos os clientes do EC2. O controle de utilização garante que as solicitações de API do Amazon EC2 não excedam os limites máximos permitidos de solicitações da API. As solicitações de API estão sujeitas aos limites de solicitações, independentemente de serem originadas de:
-
Aplicativos de terceiros
-
Uma ferramentas da linha de comando
-
O console do Amazon EC2
Se você exceder o limite de controle de utilização de API, receberá o código de erro RequestLimitExceeded.
Conteúdo
Como o controle de utilização é aplicado
O Amazon EC2 usa o algoritmo de bucket de tokens
O Amazon EC2 implementa dois tipos de controle de utilização de API:
Tipos de controle de utilização de API
Limitação de intervalo de solicitações
Com a limitação da taxa de solicitação, cada API é avaliada individualmente, e você tem controle de utilização em relação ao número de solicitações feitas por API. Cada solicitação feita remove um token do bucket da API. Por exemplo, o tamanho do bucket de tokens para DescribeHosts, uma ação de API sem mutação, é de cem tokens. Você pode fazer até cem solicitações DescribeHosts no total por segundo. Se você exceder cem solicitações em um segundo, terá controle de utilização nessa API, e as solicitações restantes nesse segundo falharão. No entanto, as solicitações de outra API não serão afetadas.
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 conter mais do que seu número máximo de tokens. Por exemplo, o tamanho do bucket para DescribeHosts, uma ação de API sem mutação, é de cem tokens e a taxa de recarga é vinte tokens por segundo. Se você fizer cem solicitações DescribeHosts em um segundo, o bucket será reduzido para zero (0) tokens. O bucket será então recarregado com vinte tokens a cada segundo até atingir sua capacidade máxima de cem tokens. Isso significa que um bucket vazio atingirá sua capacidade máxima após 5 segundos se nenhuma solicitação for feita durante esse período.
Para fazer solicitações de API, não é necessário esperar que o bucket esteja completamente cheio. Você pode usar tokens de recarga à 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 DescribeHosts, uma ação de API sem mutação, é de cem tokens e a taxa de recarga é vinte tokens por segundo. Se você esgotar o bucket fazendo cem solicitações de API em um segundo, poderá continuar fazendo vinte solicitações de API por segundo usando os tokens de recarga à medida que forem adicionados ao bucket. O bucket só pode ser recarregado até a capacidade máxima quando você faz menos de vinte solicitações de API por segundo.
Para obter mais informações, consulte Solicite tamanhos de buckets de token e taxas de recarga.
Limitação de taxa de recursos
Algumas ações de API, como RunInstances e TerminateInstances, 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 ações de API têm um bucket de tokens separado que se esgota com base no número de recursos afetados pela solicitações. Assim como os buckets de token de solicitação, os buckets de token de recurso têm um limite máximo que permite picos e uma taxa de recarga que permite manter um fluxo constante de solicitações pelo tempo necessário. Se você exceder um limite de bucket específico para uma API, inclusive quando um bucket ainda não foi reabastecido para comportar a próxima solicitação de API, a ação de API será limitada, mesmo que você não tenha atingido o limite total de controle de utilização da API.
Por exemplo, o tamanho do bucket de recursos para RunInstances é de mil tokens e a taxa de recarga é de dois tokens por segundo. Portanto, você pode iniciar imediatamente mil instâncias, usando qualquer número de solicitações de API, como uma solicitação para mil 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 do bucket de tokens de recursos e taxas de recarga.
Solicite tamanhos de buckets de token e taxas de recarga
Para fins de limitação da taxa de solicitação, as ações da API são agrupadas nas seguintes categorias:
-
Non-mutating actions — ações de API que recuperam dados sobre recursos. Essa categoria geralmente inclui todas as ações de API
Describe*,List*,Search*eGet*, comoDescribeRouteTables,SearchTransitGatewayRouteseGetIpamPoolCidrs. Essas ações de API geralmente têm os maiores limites de controle de utilização de API. -
Ações não filtradas e não paginadas sem mutação: um subconjunto específico de ações de API sem mutação que, quando solicitadas sem especificar paginação ou filtro, usam tokens de um bucket de tokens menor. É recomendável que você use paginação e filtragem para que os tokens sejam deduzidos do bucket de tokens padrão (maior).
-
Ações mutantes: as ações de API que criam. modificam ou excluem recursos. Essa categoria geralmente inclui todas as ações de API que não são categorizadas como ações não mutantes, como
AllocateHosts,ModifyHostseCreateCapacityReservation. Essas ações têm um limite de controle de utilização menor do que as ações de API não mutantes. -
Resource-intensive actions — Ações de API mutantes que levam mais tempo e consomem mais recursos para serem concluídas. Essas ações têm um limite de controle de utilização até menor do que as ações mutantes. Elas têm controle de utilização separado de outras ações mutantes.
-
Ações sem mutação do console — ações de Non-mutating API que são solicitadas no console do Amazon EC2. Essas ações de API têm controle de utilização separado de outras ações de API não mutantes.
-
Ações não categorizadas: são ações de API que recebem seus próprios tamanhos de bucket de tokens e taxas de recarga, embora, por definição, se encaixem em uma das outras categorias.
| Categoria de ações de API | Ações | Capacidade máxima do bucket | Taxa de recarga do bucket |
|---|---|---|---|
| Non-mutating actions |
As ações |
100 | 20 |
| Ações não mutantes não filtradas e não paginadas |
|
50 | 10 |
| Ações não mutantes | Todas as ações mutantes da API que não são Resource-intensive ações ou ações não categorizadas. |
50 | 5 |
| Resource-intensive actions |
|
50 | 5 |
| Ações não mutantes do console |
As ações de API |
100 | 10 |
| Ações sem categoria | Capacidade máxima do bucket | Taxa de recarga do bucket |
|---|---|---|
AcceptVpcEndpointConnections |
10 | 1 |
AdvertiseByoipCidr |
1 | 0.1 |
AssignIpv6Addresses |
100 | 5 |
AssignPrivateIpAddresses |
100 | 5 |
AssignPrivateNatGatewayAddress |
10 | 1 |
AssociateCapacityReservationBillingOwner |
1 | 0,5 |
AssociateEnclaveCertificateIamRole |
10 | 1 |
AssociateIamInstanceProfile |
100 | 5 |
AssociateNatGatewayAddress |
10 | 1 |
AttachVerifiedAccessTrustProvider |
10 | 2 |
AuthorizeClientVpnIngress |
5 | 2 |
CancelDeclarativePoliciesReport |
1 | 1 |
CopyImage |
100 | 1 |
CreateClientVpnRoute |
5 | 2 |
CreateCoipCidr |
5 | 1 |
CreateCoipPool |
5 | 1 |
CreateDefaultSubnet |
1 | 1 |
CreateDefaultVpc |
1 | 1 |
CreateLaunchTemplateVersion |
100 | 5 |
CreateNatGateway |
10 | 1 |
CreateNetworkInterface |
100 | 5 |
CreateRestoreImageTask |
50 | 0.1 |
CreateSnapshot |
100 | 5 |
CreateSnapshots |
100 | 5 |
CreateSpotDatafeedSubscription |
50 | 3 |
CreateStoreImageTask |
50 | 0.1 |
CreateSubnetCidrReservation |
5 | 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 |
DeleteClientVpnRoute |
5 | 2 |
DeleteCoipCidr |
5 | 1 |
DeleteCoipPool |
5 | 1 |
DeleteCoipPoolPermission |
5 | 1 |
DeleteNatGateway |
10 | 1 |
DeleteNetworkInterface |
100 | 5 |
DeleteSnapshot |
100 | 5 |
DeleteSpotDatafeedSubscription |
50 | 3 |
DeleteSubnetCidrReservation |
5 | 1 |
DeleteQueuedReservedInstances |
5 | 5 |
DeleteTags |
100 | 10 |
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 |
DescribeAggregateIdFormat |
10 | 10 |
DescribeByoipCidrs |
1 | 0,5 |
DescribeCapacityBlockExtensionOfferings |
10 | 0,15 |
DescribeCapacityBlockOfferings |
10 | 0,15 |
DescribeDeclarativePoliciesReports |
5 | 5 |
DescribeHostReservations |
5 | 2 |
DescribeHostReservationOfferings |
5 | 2 |
DescribeIdentityIdFormat |
10 | 10 |
DescribeIdFormat |
10 | 10 |
DescribeInstanceTopology |
1 | 1 |
DescribeMovingAddresses |
1 | 1 |
DescribePrincipalIdFormat |
10 | 10 |
DescribeReservedInstancesOfferings |
10 | 10 |
DescribeSecurityGroupReferences |
20 | 5 |
DescribeSpotDatafeedSubscription |
100 | 13 |
DescribeSpotFleetInstances |
100 | 5 |
DescribeSpotFleetRequestHistory |
100 | 5 |
DescribeSpotFleetRequests |
50 | 3 |
DescribeStaleSecurityGroups |
20 | 5 |
DescribeStoreImageTasks |
50 | 0,5 |
DescribeVerifiedAccessInstanceLoggingConfigurations |
10 | 2 |
DetachVerifiedAccessTrustProvider |
10 | 2 |
DisableFastLaunch |
5 | 2 |
DisableImageBlockPublicAccess |
1 | 0,1 |
DisableSnapshotBlockPublicAccess |
1 | 0,1 |
DisassociateCapacityReservationBillingOwner |
1 | 0,5 |
DisassociateEnclaveCertificateIamRole |
10 | 1 |
DisassociateIamInstanceProfile |
100 | 5 |
DisassociateNatGatewayAddress |
10 | 1 |
EnableFastLaunch |
5 | 2 |
EnableImageBlockPublicAccess |
1 | 0,1 |
EnableSnapshotBlockPublicAccess |
1 | 0.1 |
GetAssociatedEnclaveCertificateIamRoles |
10 | 1 |
GetDeclarativePoliciesReportSummary |
5 | 5 |
GetHostReservationPurchasePreview |
5 | 2 |
ModifyImageAttribute |
100 | 5 |
ModifyInstanceMetadataDefaults |
2 | 2 |
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 |
PurchaseCapacityBlockExtension |
10 | 0,15 |
PurchaseHostReservation |
5 | 2 |
PurchaseReservedInstancesOffering |
5 | 5 |
RejectVpcEndpointConnections |
10 | 1 |
RestoreAddressToClassic |
1 | 1 |
RevokeClientVpnIngress |
5 | 2 |
RunInstances |
5 | 2 |
StartDeclarativePoliciesReport |
1 | 1 |
StartInstances |
5 | 2 |
TerminateInstances |
100 | 5 |
UnassignPrivateIpAddresses |
100 | 5 |
UnassignPrivateNatGatewayAddress |
10 | 1 |
WithdrawByoipCidr |
1 | 0.1 |
Tamanhos do bucket 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 ações de API que usam limitação de taxa de recursos.
| Ação da API | Capacidade máxima do bucket | Taxa de recarga do bucket |
|---|---|---|
RunInstances |
1000 | 2 |
TerminateInstances |
1000 | 20 |
StartInstances |
1000 | 2 |
StopInstances |
1000 | 20 |
Monitore o controle de utilização da API
Você pode usar CloudWatch a Amazon para monitorar suas solicitações de API do Amazon EC2 e coletar e rastrear métricas sobre a limitação de API. Você também pode criar um alarme que avise quando estiver perto de atingir os limites de controle de utilização da API. Para obter mais informações, consulte Monitore solicitações de EC2 API da Amazon usando a Amazon CloudWatch.
Notas tentativas e recuo exponencial
É possível que sua aplicação precise tentar novamente uma solicitação de API. Por exemplo:
-
Para conferir 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 falha com um erro do servidor (5xx) ou um erro de controle de utilização.
No entanto, erros de cliente (4xx) indicam que você precisa analisar a solicitação para corrigir o problema antes de tentar novamente.
Alterações de status de recursos
Antes de iniciar a sondagem para conferir se há atualizações de status, aguarde a conclusão da solicitação. Por exemplo, aguarde alguns minutos antes de conferir se sua instância está ativa. Ao iniciar a sondagem, use um intervalo de latência apropriado entre as solicitações sucessivas para reduzir a taxa de solicitações de API. 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 de State-changenotificação de instância do EC2 para notificá-lo sobre uma mudança de estado em uma instância. Para obter mais informações, consulte Automatizar o Amazon EventBridge EC2 usando.
Novas tentativas
Quando você precisar fazer a sondagem ou repetir uma solicitação de API, é recomendável usar um algoritmo de recuo exponencial para calcular o intervalo de latência entre as solicitações de 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. Também é possível usar instabilidade (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 AWS SDK implementa a lógica de repetição automática. Para obter mais informações, consulte Retry behavior no Guia de referência de ferramentas e SDKs da AWS .
Veja seus limites atuais de API
Você pode visualizar seus limites atuais e padrão para cada ação de API do Amazon EC2 para você Conta da AWS usando o console Service Quotas.
Como as cotas se relacionam com seu limite de aceleração
Cada limite de aceleração da API é composto por duas cotas que trabalham juntas para definir a taxa de solicitações intermitentes e sustentadas:
-
Capacidade máxima do bucket — determina o número máximo de solicitações que você pode fazer em um burst. Esta é a sua taxa de explosão.
-
Taxa de recarga do balde — determina o número de fichas adicionadas ao balde por segundo. Esta é sua taxa sustentada.
Exemplo: Exibir limite RunInstances do acelerador
Para ver o limite do RunInstances acelerador, pesquise por. RunInstances O console exibe:
-
RunInstancescapacidade máxima do bucket de solicitação — por exemplo, 5 (intermitência) -
RunInstancestaxa de recarga do balde de solicitação — por exemplo, 2 por segundo (sustentada)
Essas duas cotas juntas definem o limite total do RunInstances acelerador.
Entendendo os valores da cota
-
O valor da cota aplicada no nível da conta indica qualquer substituição de cota aplicada à sua conta. Essa é sua cota efetiva atual.
-
O valor da cota AWS padrão indica a cota padrão de limitação da API.
nota
Aguarde até 24 horas para que qualquer ajuste de cota seja refletido no console Service Quotas.
Para ver suas cotas atuais
-
Abra o console do Service Quotas em https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/
. -
Pesquise o nome da ação da API (por exemplo,
RunInstances) e o padrão do nome da cota para encontrar as entradas de cota correspondentes.
A tabela a seguir descreve os padrões de nomes de cotas.
| Padrão de nome de cota | Description |
|---|---|
{API_NAME}capacidade máxima do bucket de solicitação |
Taxa de explosão — o número máximo de tokens disponíveis |
{API_NAME}solicitar taxa de recarga do balde |
Taxa sustentada — tokens adicionados por segundo |
{API_NAME}capacidade máxima do bucket de solicitações não filtrado |
Taxa de intermitência — o número máximo de tokens disponíveis para solicitações não filtradas (não paginadas) |
{API_NAME}taxa de recarga do bucket de solicitações não filtrado |
Taxa sustentada — tokens adicionados por segundo para solicitações não filtradas (não paginadas) |
Solicitar um aumento de limite de
É possível solicitar um aumento dos limites de controle de utilização de API para a Conta da AWS.
Recomendações
-
Solicite no máximo três vezes o limite existente em uma única solicitação.
-
Priorize o aumento das taxas de recarga do bucket antes de aumentar a respectiva capacidade máxima.
-
Se a taxa de recarga do bucket solicitada exceder a capacidade máxima, aumente a capacidade máxima do bucket ao mesmo tempo.
-
Forneça todas as ações de API que exijam aumento. Os limites são aplicados às ações individuais da API, não às categorias de ação da API.
-
Há limites de taxa de solicitação e taxa de recursos para as seguintes ações de API:
RunInstances,StartInstances,StopInstanceseTerminateInstances. Indique qual limite deve ser aumentado.
Como solicitar acesso a esse atributo
-
Abra o AWS Support Center
. -
Escolha Criar caso.
-
Escolha Conta e faturamento.
-
Em Serviço, escolha Informações gerais e introdução.
-
Em Categoria, escolha Uso AWS e serviços.
-
Selecione Próxima etapa: informações adicionais.
-
Em Subject (Assunto), insira
Request an increase in my Amazon EC2 API throttling limits. -
Em Descrição, copie o modelo a seguir e forneça as informações necessárias.
Please increase the API throttling limits for my account. Related page: https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-throttling.html Description:Brief notes about your use case. If available, include the IDs of a few Amazon EC2 requests that were throttled.Time window:One-hour window when peak throttling or usage occurred.region_1request rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_1resource rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_2request rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rateregion_2resource rate increases:action:new_bucket_maximum_capacityaction:new_bucket_refill_rateaction:new_bucket_maximum_capacity|new_bucket_refill_rate -
Escolha Próxima etapa: solucione ou entre em contato conosco.
-
Escolha a guia Fale conosco e selecione o idioma e o método de contato preferidos.
-
Selecione Enviar.