Limitación de solicitudes para la API de Amazon EC2 - Amazon Elastic Compute Cloud

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Limitación de solicitudes para la API de Amazon EC2

Amazon EC2 limita las solicitudes EC2 de API para cada AWS cuenta por región. Hacemos esto para mejorar el rendimiento del servicio y garantizar un uso justo para todos los EC2 clientes de Amazon. La limitación garantiza que las solicitudes a la EC2 API de Amazon no superen los límites máximos de solicitudes de API permitidos. Las solicitudes a la API están sujetas a los límites independientemente de si se originan en:

  • Una aplicación de terceros

  • Una herramienta de línea de comandos

  • La EC2 consola Amazon

Si supera una limitación de la API, aparece el código de error RequestLimitExceeded.

Cómo se aplica la limitación

Amazon EC2 utiliza el algoritmo de depósito de fichas para implementar la limitación de las API. Con este algoritmo, su cuenta tiene un bucket que contiene un número específico de tokens. El número de tokens del bucket representa la limitación en un segundo determinado.

Amazon EC2 implementa dos tipos de limitación de API:

Limitación de velocidad de solicitudes

Al limitar la tasa de solicitudes, cada API se evalúa de forma individual y se limita el número de solicitudes que se realizan por cada API. Cada solicitud que realice elimina un token del bucket de la API. Por ejemplo, el tamaño de bucket del token para DescribeHosts, una acción de la API no mutante, es de 100 tokens. Puede realizar hasta 100 solicitudes DescribeHosts en un segundo. Si supera las 100 solicitudes en un segundo, estará limitado en esa API y fallarán las solicitudes restantes en ese segundo; sin embargo, no se verán afectadas las solicitudes a otras API.

Los buckets se recargan automáticamente a una tasa fija. Si el bucket está por debajo de la capacidad máxima, se vuelve a agregar un número determinado de tokens cada segundo hasta que alcanza la capacidad máxima. Si el bucket está lleno cuando llegan los tokens de relleno, se descartan. El bucket no puede contener más del número máximo de tokens. Por ejemplo, el tamaño de bucket para DescribeHosts, una acción de la API no mutante, es de 100 tokens y la tasa de relleno es de 20 tokens por segundo. Si realiza 100 solicitudes DescribeHosts en un segundo, el bucket se reduce a cero (0) tokens. A continuación, el bucket se rellena con 20 tokens por segundo hasta alcanzar la capacidad máxima de 100 tokens. Esto significa que un bucket vacío alcanza su capacidad máxima después de 5 segundos si no se realiza ninguna solicitud durante ese tiempo.

No tiene que esperar a que el bucket esté completamente lleno para realizar solicitudes a la API. Puede usar los tokens de relleno a medida que se vayan agregando al bucket. Si utiliza inmediatamente los tokens de relleno, el bucket no alcanza la capacidad máxima. Por ejemplo, el tamaño de bucket para DescribeHosts, una acción de la API no mutante, es de 100 tokens y la tasa de relleno es de 20 tokens por segundo. Si agota el bucket realizando 100 solicitudes a la API en un segundo, puede seguir realizando 20 solicitudes a la API por segundo utilizando los tokens de relleno a medida que se van agregando al bucket. El bucket solo puede rellenarse hasta su capacidad máxima si realiza menos 20 solicitudes a la API por segundo.

Para obtener más información, consulte Tamaños de bucket de tokens de solicitud y tasas de relleno.

Limitación de la tasa de recursos

Algunas acciones de la API, como RunInstances y TerminateInstances, que se describen en la tabla siguiente, utilizan la limitación de la tasa de recursos además de la limitación de la tasa de solicitudes. Estas acciones de la API tienen un bucket de tokens de recurso independiente que se agota en función del número de recursos que se ven afectados por la solicitud. Al igual que los buckets de tokens de solicitud, los buckets de tokens de recurso tienen un máximo de bucket que le permite ampliar y una tasa de relleno que le permite mantener una tasa constante de solicitudes durante el tiempo que sea necesario. Si supera un límite de buckets específico para una API, por ejemplo, cuando un bucket aún no se ha rellenado para admitir la siguiente solicitud de la API, la acción de la API queda limitada aunque no se haya alcanzado su limitación total.

Por ejemplo, el tamaño de bucket de tokens de recursos para RunInstances es de 1000 tokens y la tasa de relleno es de dos tokens por segundo. Por tanto, puede iniciar 1000 instancias de forma inmediata utilizando cualquier número de solicitudes a la API, como una solicitud para 1000 instancias o cuatro solicitudes para 250 instancias. Cuando el bucket de tokens de recursos esté vacío, puede iniciar hasta dos instancias por segundo, utilizando una solicitud para dos instancias o dos solicitudes para una instancia.

Para obtener más información, consulte Tamaños de bucket de tokens de recursos y tasas de relleno.

Tamaños de bucket de tokens de solicitud y tasas de relleno

Con el fin de limitar la tasa de solicitudes, las acciones de la API se agrupan en las siguientes categorías:

  • Acciones no mutantes: acciones de la API que recuperan datos sobre recursos. Esta categoría generalmente incluye todas las acciones Describe*, List*, Search* y Get* de la API, como DescribeRouteTables, SearchTransitGatewayRoutes y GetIpamPoolCidrs. Estas acciones de la API suelen tener la limitación de la API más alta.

  • Acciones no mutantes sin filtrar y sin paginar: subconjunto específico de acciones de la API no mutantes que, cuando se solicitan sin especificar la paginación o un filtro, utilizan tokens de un bucket de tokens más pequeño. Se recomienda utilizar paginación y filtrado para que los tokens se deduzcan del bucket de tokens estándar (más grande).

  • Acciones mutantes: acciones de la API que crean, modifican o eliminan recursos. Esta categoría suele incluir todas las acciones de la API que no están clasificadas como acciones no mutantes, como AllocateHosts, ModifyHosts y CreateCapacityReservation. Estas acciones tienen una limitación inferior al de las acciones de la API no mutantes.

  • Acciones que consumen muchos recursos: acciones de la API mutantes que requieren más tiempo y consumen más recursos. Estas acciones tienen una limitación incluso menor que las acciones mutantes. Se limitan por separado de otras acciones mutantes.

  • Acciones de la consola que no mutan: acciones de la API que no mutan y que se solicitan desde la consola de Amazon. EC2 Estas acciones de la API se limitan por separado de otras acciones de la API no mutantes.

  • Acciones sin categorizar: se trata de acciones de la API que reciben sus propios tamaños de bucket de tokens y tasas de relleno, aunque, por definición, encajan en alguna de las otras categorías.

Categoría de la acción de la API Acciones Capacidad máxima del bucket Tasa de relleno de bucket
Acciones no mutantes

Las acciones Describe*, List*, Search* y Get* de la API que no están incluidas en otra categoría.

100 20
Acciones no mutantes sin filtrar y sin paginar
  • DescribeInstances

  • DescribeInstanceStatus

  • DescribeNetworkInterfaces

  • DescribeSecurityGroups

  • DescribeSnapshots

  • DescribeSpotInstanceRequests

  • DescribeVolumes

50 10
Acciones mutantes

Todas las acciones de la API mutantes que no sean Acciones que consumen muchos recursos o Acciones sin categorizar.

50 5
Acciones que consumen muchos recursos
  • AcceptVpcPeeringConnection

  • AuthorizeSecurityGroupIngress

  • CancelSpotInstanceRequests

  • CreateKeyPair

  • CreateVpcPeeringConnection

  • DeleteVpcPeeringConnection

  • RejectVpcPeeringConnection

  • RevokeSecurityGroupIngress

  • RequestSpotInstances

50 5
Acciones de la consola no mutantes

Las acciones Describe*List*,Search*, y Get* API, a las que llama la EC2 consola de Amazon, pero que no se incluyen en otra categoría.

100 10
Acciones sin categorizar Capacidad máxima del bucket Tasa de relleno de 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

Tamaños de bucket de tokens de recursos y tasas de relleno

En la siguiente tabla se muestran los tamaños de bucket de tokens de recursos y las tasas de relleno para acciones de la API que utilizan limitación de tasas de recursos.

Acción de la API Capacidad máxima del bucket Tasa de relleno de bucket
RunInstances 1 000 2
TerminateInstances 1 000 20
StartInstances 1 000 2
StopInstances 1 000 20

Monitorización de limitación de la API

Puedes usar Amazon CloudWatch para supervisar tus solicitudes de EC2 API de Amazon y recopilar y realizar un seguimiento de las métricas relacionadas con la limitación de las API. También puede crear una alarma que avise cuando esté a punto de alcanzar la limitación de la API. Para obtener más información, consulte Monitorización de solicitudes de API de Amazon EC2 mediante Amazon CloudWatch.

Reintentos y retroceso exponencial

Es posible que la aplicación tenga que volver a intentar una solicitud de la API. Por ejemplo:

  • Para comprobar si hay una actualización en el estado de un recurso

  • Para enumerar una gran cantidad de recursos (por ejemplo, todos los volúmenes)

  • Para reintentar una solicitud después de que se haya producido un error del servidor (5xx) o un error de limitación

Sin embargo, si se trata de un error del cliente (4xx), deberá revisar la solicitud para corregir el problema antes de intentar la solicitud otra vez.

Cambios de estado de recursos

Antes de comenzar el sondeo para comprobar si hay actualizaciones de estado, indique el tiempo de solicitud para completarlo potencialmente. Por ejemplo, espere unos minutos antes de comprobar si la instancia está activa. Cuando empiece el sondeo, utilice un intervalo de suspensión adecuado entre solicitudes sucesivas para reducir la tasa de solicitudes a la API. Para obtener resultados óptimos, utilice un intervalo de suspensión creciente o variable.

Como alternativa, puedes usar Amazon EventBridge para que te notifique el estado de algunos recursos. Por ejemplo, puedes usar el evento de notificación de cambio de estado de la EC2 instancia para notificarte un cambio de estado en una instancia. Para obtener más información, consulta Automatizar el EC2 uso de Amazon EventBridge.

Reintentos

Cuando tenga que sondear o reintentar una solicitud de la API, recomendamos que utilice un algoritmo de retroceso exponencial para calcular el intervalo de suspensión entre las solicitudes a la API. El retardo exponencial se basa en la idea de utilizar tiempos de espera progresivamente más largos entre reintentos para las respuestas a errores consecutivos. Debe implementar un intervalo de retraso máximo, así como un número máximo de intentos. También puede utilizar fluctuación (retardo aleatorio) para evitar colisiones sucesivas. Para obtener más información, consulte Tiempos de espera, reintentos y retardo con fluctuación.

Cada AWS SDK implementa una lógica de reintento automático. Para obtener más información, consulte el comportamiento de los reintentos en la Guía de referencia de herramientas AWS SDKs y herramientas.

Solicitar un aumento de límite de

Puede solicitar un aumento de la limitación de la API para su Cuenta de AWS.

Recomendaciones
  • Solicite como máximo el triple del límite actual en una sola solicitud.

  • Priorice el aumento de las tasas de relleno de buckets antes de aumentar la capacidad máxima del bucket.

  • Si la tasa solicitada de relleno del bucket supera la capacidad máxima del bucket, aumente la capacidad máxima del bucket al mismo tiempo.

  • Proporcione todas las acciones de la API que requieran un aumento. Los límites se aplican a acciones individuales de la API, no a categorías de acciones de la API.

  • Existen límites tanto en la tasa de solicitudes como en la tasa de recursos para las siguientes acciones de la API: RunInstances, StartInstances, StopInstances y TerminateInstances. Asegúrese de indicar qué límite debe aumentarse

Cómo solicitar acceso a esta característica
  1. Abra Centro de AWS Support.

  2. Elija Crear caso.

  3. Elija Cuenta y facturación.

  4. En Servicio, seleccione Información general y cómo empezar.

  5. En Categoría, elija Uso AWS y servicios.

  6. Elija Siguiente paso: información adicional.

  7. En Subject (Asunto), escriba Request an increase in my Amazon EC2 API throttling limits.

  8. En Descripción, copie la siguiente plantilla y proporcione la información requerida.

    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_1 request rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_1 resource rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_2 request rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate region_2 resource rate increases: action: new_bucket_maximum_capacity action: new_bucket_refill_rate action: new_bucket_maximum_capacity|new_bucket_refill_rate
  9. Elija Siguiente paso: Resuelva ahora o póngase en contacto con nosotros.

  10. Elija la pestaña Contacte con nosotros y seleccione el idioma y el método de contacto preferidos.

  11. Elija Enviar.