

# Limitación controlada de solicitudes de la API de Amazon ECS
<a name="request-throttling"></a>

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
<a name="throttling-how"></a>

Amazon ECS utiliza el [algoritmo de bucket de tokens](https://en.wikipedia.org/wiki/Token_bucket) 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
<a name="throttling-quotas"></a>

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 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 20 | 1 | 
| Acciones de lectura de clúster |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de modificación de definiciones de tarea |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 20 | 1 | 
| Acciones de lectura de definiciones de tarea |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de eliminación de definiciones de tarea |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 5 | 1 | 
| Acciones de modificación de proveedores de capacidad |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 10 | 1 | 
| Acciones de lectura de proveedores de capacidad |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de modificación de etiquetas |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 20 | 10 | 
| Acciones de lectura de etiquetas |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de modificación de configuración |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 10 | 1 | 
| Acciones de lectura de configuración |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de modificación de recursos de clúster |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 100 | 40 | 
| Acciones de lectura de recursos de clúster |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 100 | 20 | 
| Acciones de modificación del agente |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 200 | 120 | 
| Acciones de modificación de servicios |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 5 | 
| Acciones de lectura de servicios |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 100 | 20 | 
| Acciones de implementación de servicios |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de revisiones de servicios |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 50 | 20 | 
| Acciones de protección de tareas |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 200 | 80 | 
| Acciones de lectura de recursos de servicios de clúster |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/request-throttling.html)  | 10 | 1 | 

<a name="note-1"></a>1 AWS Fargate también aplica limitación controlada a la API `RunTask` de Amazon ECS según las tasas indicadas [aquí](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/throttling.html) en la *Guía para desarrolladores de Amazon ECS*.

## Ajuste de las cuotas de limitación de las API
<a name="throttling-increase"></a>

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](https://console.aws.amazon.com/support/home#/).

## Gestión de la limitación controlada de la API
<a name="handling-throttling"></a>

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:
+ [Reintentos de error y retroceso exponencial en AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) en la Guía de referencia general de AWS
+ Publicación en el blog [Retroceso exponencial y fluctuación](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)
+ Artículo [Tiempos de espera, reintentos y retroceso con fluctuación](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/) en Amazon Builder’s Library