View a markdown version of this page

Limitación controlada de solicitudes de la API de Amazon ECS - Amazon Elastic Container Service

Limitación controlada de solicitudes de la API de Amazon ECS

Amazon Elastic Container Service aplica limitación controlada a todas las solicitudes de API de cada cuenta de AWS por región. Esto permite garantizar un rendimiento uniforme y un uso justo del servicio para todos los clientes de Amazon ECS. La limitación controlada impide que las llamadas a la API de Amazon ECS superen las cuotas máximas permitidas de solicitudes de API, tanto para Amazon ECS como para los demás servicios de AWS con los que se integra. Las llamadas a la API están sujetas a las cuotas de solicitudes, independientemente de su procedencia:

  • Una aplicación de terceros

  • Una herramienta de línea de comandos

  • Consola de Amazon ECS

Si supera una cuota de limitación de la API, aparece el código de error 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)

Cómo se aplica la limitación controlada

Amazon ECS utiliza el algoritmo de bucket de tokens para implementar la limitación controlada de la 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 su cuota de limitación en un segundo determinado.

Amazon ECS analiza la frecuencia con la que se envían solicitudes a todas las API de Amazon ECS de la cuenta, por región, y aplica dos tipos de cuotas de limitación controlada de API: sostenida y de ampliación. La tasa sostenida es el promedio de solicitudes de API permitidas por segundo a lo largo del tiempo para una operación. La tasa de ampliación es el número máximo de solicitudes de API permitidas en un segundo determinado. Con la tasa de ampliación, es posible realizar periódicamente una cantidad de solicitudes de API superior a la tasa sostenida. Después de eso, Amazon ECS aplica limitación controlada a las solicitudes de API posteriores hasta que la tasa de solicitudes de API permitidas a lo largo del tiempo se estabiliza en la tasa sostenida. En el algoritmo de bucket de tokens, la capacidad máxima del bucket representa la tasa de ampliación, y la tasa de recarga del bucket corresponde a la tasa sostenida. En el siguiente ejemplo, se usarán estos términos para ilustrar la limitación controlada de solicitudes de la API de Amazon ECS.

La limitación controlada se aplica en función del número de solicitudes de API realizadas, y cada solicitud elimina un token del bucket de tokens. Por ejemplo, el tamaño del bucket para las acciones de lectura de clúster, como la API DescribeClusters, es de 50 tokens, por lo que se pueden realizar hasta 50 solicitudes DescribeClusters en un segundo. Si se superan las 50 solicitudes en un segundo, se aplica la limitación controlada y las solicitudes restantes de ese segundo fallan.

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 tokens que su capacidad máxima. Por ejemplo, el tamaño del bucket para las acciones de lectura de clúster, como la API DescribeClusters, es de 50 tokens, y la tasa de recarga es de 20 tokens por segundo. Si se realizan 50 solicitudes de API DescribeClusters en un segundo, el bucket se reduce inmediatamente a cero tokens. A continuación, el bucket se rellena con 20 tokens por segundo hasta alcanzar la capacidad máxima de 50 tokens. Esto significa que el bucket, que estaba vacío, alcanza su capacidad máxima en 2,5 segundos.

No tiene que esperar a que el bucket esté completamente lleno para realizar solicitudes a la API. Puede usar los tokens 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 del bucket para las acciones de lectura de clúster, como la API DescribeClusters, es de 50 tokens, y la tasa de recarga es de 20 tokens por segundo. Si se vacía el bucket al realizar 50 solicitudes de API en un segundo, se pueden seguir realizando 20 solicitudes de API por segundo. El bucket solo puede rellenarse hasta su capacidad máxima si realiza menos 20 solicitudes a la API por segundo.

Tamaños de bucket de tokens de solicitudes y tasas de recarga

Para fines de la limitación de la tasa de solicitudes, las acciones de la API se agrupan en categorías. Todas las acciones de API de una categoría comparten el mismo bucket de tokens. Por ejemplo, las API DescribeClusters y ListClusters comparten el bucket Acciones de lectura de clúster, cuya capacidad es de 50 y cuya tasa de recarga es de 20. Esto significa que el número acumulado de solicitudes de API para todas las Acciones de lectura de clúster está sujeto a la misma cuota de tasa de ampliación de 50 solicitudes de API. Por lo tanto, es posible realizar 25 solicitudes de API DescribeClusters y 25 solicitudes de API ListClusters en un segundo; o 30 solicitudes DescribeClusters y 20 solicitudes ListClusters; o 50 solicitudes DescribeClusters y 0 solicitudes ListClusters; o 0 solicitudes DescribeClusters y 50 solicitudes ListClusters. Sin embargo, no es posible realizar 50 solicitudes DescribeClusters y 50 solicitudes ListClusters al mismo tiempo. La tasa sostenida también se aplica de forma acumulativa a todas las solicitudes de API dentro de un bucket.

En la siguiente tabla, se muestran la capacidad del bucket (o ampliación) y la tasa de recarga (o sostenida) para todas las regiones de AWS. Todas las categorías de acciones de API aplican cuotas de tasa por región para cada cuenta de AWS.

Categoría de la acción de la API Acciones Capacidad máxima del bucket (o velocidad de ráfaga) Tasa de recarga del bucket (o tasa sostenida)
Acciones de modificación de clúster
  • CreateCluster

  • DeleteCluster

  • PutClusterCapacityProviders

  • UpdateCluster

  • UpdateClusterSettings

20 1
Acciones de lectura de clúster
  • DescribeClusters

  • ListClusters

50 20
Acciones de modificación de definiciones de tarea
  • DeregisterTaskDefinition

  • RegisterTaskDefinition

20 1
Acciones de lectura de definiciones de tarea
  • DescribeTaskDefinition

  • ListTaskDefinitions

  • ListTaskDefinitionFamilies

50 20
Acciones de eliminación de definiciones de tarea
  • DeleteTaskDefinitions

5 1
Acciones de modificación de proveedores de capacidad
  • CreateCapacityProvider

  • DeleteCapacityProvider

  • UpdateCapacityProvider

10 1
Acciones de lectura de proveedores de capacidad
  • DescribeCapacityProviders

50 20
Acciones de modificación de etiquetas
  • TagResource

  • UntagResource

20 10
Acciones de lectura de etiquetas
  • ListTagsForResource

50 20
Acciones de modificación de configuración
  • DeleteAccountSetting

  • PutAccountSetting

  • PutAccountSettingDefault

10 1
Acciones de lectura de configuración
  • ListAccountSettings

50 20
Acciones de modificación de recursos de clúster
  • DeleteAttributes

  • DeregisterContainerInstance

  • ExecuteCommand

  • PutAttributes

  • RunTask1

  • StartTask

  • StopTask

  • UpdateContainerAgent

  • UpdateContainerInstancesStates

100 40
Acciones de lectura de recursos de clúster
  • DescribeContainerInstances

  • DescribeTasks

  • ListAttributes

  • ListContainerInstances

  • ListTasks

100 20
Acciones de modificación del agente
  • RegisterContainerInstance

  • SubmitAttachmentStateChanges

  • SubmitContainerStateChange

  • SubmitTaskStateChange

200 120
Acciones de modificación de servicios
  • CreateService

  • DeleteService

  • UpdateService

50 5
Acciones de lectura de servicios
  • DescribeServices

  • ListServices

100 20
Acciones de implementación de servicios
  • DescribeServiceDeployments

  • ListServiceDeployments

50 20
Acciones de revisiones de servicios
  • DescribeServiceRevisions

50 20

Acciones de protección de tareas

  • UpdateTaskProtection

  • GetTaskProtection

200 80
Acciones de lectura de recursos de servicios de clúster
  • ListServicesByNamespace

10 1

1 AWS Fargate también aplica limitación controlada a la API RunTask de Amazon ECS según las tasas indicadas aquí en la Guía para desarrolladores de Amazon ECS.

Ajuste de las cuotas de limitación de las API

Se puede solicitar un aumento de las cuotas de limitación controlada de API para la cuenta de AWS. Para solicitar un ajuste de cuota, póngase en contacto con AWS SupportCenter.

Gestión de la limitación controlada de la API

Se puede implementar una estrategia de reintento de errores y retroceso exponencial para evitar que los errores de limitación controlada afecten las cargas de trabajo. Si se utiliza el SDK de AWS, la lógica de reintento automático ya viene incorporada y se puede configurar. Para obtener más detalles, consulte los siguientes recursos: