

# Uso de Amazon ECS a escala
<a name="operating-at-scale-best-practice"></a>

Cuando empiece a utilizar Amazon ECS a escala, tenga en cuenta cómo podrían afectarle las cuotas de servicio y las limitaciones de las API para Amazon ECS y los Servicios de AWS que se integran con Amazon ECS. 

**Topics**
+ [

# Cuotas de servicio de Amazon ECS y límites de limitación de las API
](operating-at-scale-service-quotas-best-practice.md)
+ [

# Gestión de los problemas de limitación de Amazon ECS
](operating-at-scale-dealing-with-throttles.md)

# Cuotas de servicio de Amazon ECS y límites de limitación de las API
<a name="operating-at-scale-service-quotas-best-practice"></a>

Amazon ECS integra varios Servicios de AWS, como Elastic Load Balancing, AWS Cloud Map y Amazon EC2. Con esta integración estrecha, Amazon ECS incluye varias características, como el equilibrio de carga de servicios, la detección de servicios, la creación de redes de tareas y el escalado automático de clústeres. Amazon ECS y los demás Servicios de AWS con los que se integra mantienen las cuotas de servicio y los límites de velocidad de las API para garantizar un rendimiento y una utilización uniformes. Estas cuotas de servicio también evitan el aprovisionamiento accidental de más recursos de los necesarios y protegen contra acciones malintencionadas que podrían aumentar su factura.

Si se familiariza con las cuotas de servicio y los límites de velocidad de las API de AWS, podrá planificar el escalado de sus cargas de trabajo sin preocuparse por una degradación inesperada del rendimiento. Para más información, consulte [Cuotas de servicio de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html) y [Request throttling for the Amazon ECS API](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/request-throttling.html).

Al escalar las cargas de trabajo en Amazon ECS, tenga en cuenta la siguiente cuota de servicio. Para obtener las instrucciones sobre cómo solicitar un aumento de las cuotas de servicio, consulte [Administración de Amazon ECS y cuotas de servicio de AWS Fargate en la Consola de administración de AWS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas-manage.html).
+ AWS Fargate tiene cuotas que limitan el número de tareas que se ejecutan simultáneamente en cada Región de AWS. Existen cuotas para las tareas de spot de Fargate y bajo demanda en Amazon ECS. Cada cuota de servicio también incluye todos los pods de Amazon EKS que ejecute en Fargate. Para más información acerca de las cuotas de Fargate, consulte [Cuotas de servicio de AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/service-quotas.html#service-quotas-fargate) en la *Guía del usuario de Amazon Elastic Container Service para AWS Fargate*.
+ Para las tareas que se ejecutan en instancias de Amazon EC2, el número máximo de instancias de Amazon EC2 que puede registrar para cada clúster es de 5000. Si utiliza el escalado automático de clústeres de Amazon ECS con un proveedor de capacidad del grupo de escalado automático o si administra las instancias de Amazon EC2 para su clúster por su cuenta, esta cuota podría convertirse en un obstáculo para la implementación. Si necesita más capacidad, puede crear más clústeres o solicitar un aumento de la cuota de servicio.
+ Si utiliza el escalado automático de clústeres de Amazon ECS con un proveedor de capacidad del grupo de escalado automático, al escalar sus servicios tenga en cuenta la cuota de `Tasks in the PROVISIONING state per cluster`. Esta cuota es la cantidad máxima de tareas en el estado `PROVISIONING` para cada clúster para las que los proveedores de capacidad pueden aumentar la capacidad. Si lanza un gran número de tareas al mismo tiempo, puede cumplir fácilmente con esta cuota. Un ejemplo es si implementa simultáneamente decenas de servicios, cada uno con cientos de tareas. Cuando esto sucede, el proveedor de capacidad debe lanzar nuevas instancias de contenedor para colocar las tareas cuando el clúster no tiene suficiente capacidad. Mientras el proveedor de capacidad lanza instancias de Amazon EC2 adicionales, es probable que el programador de servicios de Amazon ECS continúe lanzando tareas en paralelo. Sin embargo, esta actividad podría verse limitada debido a la capacidad insuficiente del clúster. El programador de servicios de Amazon ECS implementa una estrategia de limitación exponencial y de retroceso para volver a intentar la ubicación de las tareas a medida que se lanzan nuevas instancias de contenedores. Como resultado, es posible que los tiempos de implementación o escalado horizontal sean más lentos. Para evitar esta situación, puede planificar las implementaciones de los servicios de una de las siguientes maneras. Implemente una gran cantidad de tareas que no requieran aumentar la capacidad del clúster o mantenga la capacidad sobrante del clúster para el lanzamiento de nuevas tareas.

Además de tener en cuenta la cuota de servicio de Amazon ECS al escalar sus cargas de trabajo, considere también la cuota de servicio para los demás Servicios de AWS que estén integrados con Amazon ECS. En la siguiente sección se describen en detalle los límites de velocidad clave de cada servicio y se proporcionan recomendaciones para abordar posibles problemas de limitación.

## Elastic Load Balancing
<a name="operating-at-scale-service-quotas-elb"></a>

Puede configurar los servicios de Amazon ECS para que utilicen Elastic Load Balancing a fin de distribuir el tráfico de manera uniforme entre las tareas. Para más información sobre cómo seleccionar un equilibrador de carga, consulte [Uso del equilibrador de carga para distribuir el tráfico de servicio de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html).

### Cuotas de servicio de Elastic Load Balancing
<a name="elb-service-quotas"></a>

Cuando escale sus cargas de trabajo, tenga en cuenta las siguientes cuotas de servicio de Elastic Load Balancing. La mayoría de las cuotas de servicio de Elastic Load Balancing son ajustables y se puede solicitar un aumento en la consola de Service Quotas.

**Equilibrador de carga de aplicación**

Cuando utilice un equilibrador de carga de aplicación, en función de su caso de uso, es posible que tenga que solicitar un aumento de cuota para:
+  La cuota de `Targets per Application Load Balancer`, que es el número de destinos detrás de su equilibrador de carga de aplicación.
+ La cuota de `Targets per Target Group per Region`, que es el número de destinos detrás de sus grupos de destino.

Para obtener más información, consulte [Cuotas para sus Equilibradores de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html).

**Equilibrador de carga de red de**

Existen limitaciones más estrictas en cuanto a la cantidad de destinos que puede registrar con un equilibrador de carga de red. Cuando utilice un equilibrador de carga de red, a menudo querrá habilitar la compatibilidad entre zonas, lo que conlleva limitaciones de escalado adicionales en `Targets per Availability Zone Per Network Load Balancer` el número máximo de destinos por zona de disponibilidad para cada equilibrador de carga de red. Para más información, consulte [Quotas for your Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-limits.html).

### Limitación de las API de Elastic Load Balancing
<a name="elb-service-api-throttling"></a>

Al configurar un servicio de Amazon ECS para usar un equilibrador de carga, se deben aprobar las comprobaciones de estado del grupo de destino antes de que se considere que el servicio está en buen estado. Para llevar a cabo estas comprobaciones de estado, Amazon ECS invoca las operaciones de la API de Elastic Load Balancing en su nombre. Si tiene una gran cantidad de servicios configurados con equilibradores de carga en su cuenta, podría ver una ralentización de las implementaciones de los servicios debido a una posible limitación específica de las operaciones `RegisterTarget`, `DeregisterTarget` y `DescribeTargetHealth` de la API de Elastic Load Balancing. Cuando se produce una limitación, se producen errores de limitación en los mensajes de eventos del servicio de Amazon ECS.

Si experimenta una limitación de las API de AWS Cloud Map, puede contactar con Soporte para obtener orientación sobre cómo aumentar sus límites de limitación de la API de AWS Cloud Map. Para más información acerca de la supervisión y la solución de problemas tales como errores de limitación, consulte [Gestión de los problemas de limitación](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/operating-at-scale-dealing-with-throttles.html). 

## Interfaces de red elásticas
<a name="elastic-network-interfaces"></a>

Cuando las tareas utilizan el modo de red `awsvpc`, Amazon ECS proporciona una interfaz de red elástica (ENI) única para cada tarea. Cuando sus servicios de Amazon ECS utilizan un equilibrador de carga de Elastic Load Balancing, estas interfaces de red también se registran como destinos para el grupo de destino correspondiente definido en el servicio.

### Cuotas de servicio de la interfaz de red elástica
<a name="eni-service-quotas"></a>

Cuando ejecuta tareas que utilizan el modo de red `awsvpc`, se adjunta una interfaz de red elástica única a cada tarea. Si es necesario acceder a esas tareas a través de Internet, asigne una dirección IP pública a la interfaz de red elástica de esas tareas. Cuando escale sus cargas de trabajo de Amazon ECS, tenga en cuenta estas dos cuotas importantes:
+ La cuota de `Network interfaces per Region`, que es el número máximo de interfaces de red en una Región de AWS para su cuenta.
+ La cuota de `Elastic IP addresses per Region`, que es el número máximo de direcciones IP elásticas en una Región de AWS.

Estas dos cuotas de servicio son ajustables y puede solicitar un aumento de estas desde la consola de Service Quotas. Para más información, consulte [Cuotas de servicio de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-enis).

En cuanto a las cargas de trabajo de Amazon ECS que se alojan en instancias de Amazon EC2, al ejecutar tareas que utilizan el modo de red `awsvpc`, tenga en cuenta la cuota de servicio `Maximum network interfaces` (el número máximo de instancias de red para cada instancia de Amazon EC2). Esta cuota limita la cantidad de tareas que puede colocar en una instancia. No puede ajustar la cuota y no está disponible en la consola de Service Quotas. Para obtener más información, consulte [Direcciones IP por interfaz de red por tipo de instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) en la *Guía del usuario de Amazon EC2*.

Aunque no se puede cambiar el número de interfaces de red que pueden adjuntarse a una instancia de Amazon EC2, se puede utilizar la característica de enlace troncal de interfaz de red elástica para aumentar el número de interfaces de red disponibles. Por ejemplo, de forma predeterminada, una instancia `c5.large` puede tener hasta tres interfaces de red. La interfaz de red principal de la instancia cuenta como una. Por lo tanto, puede adjuntar dos interfaces de red adicionales a la instancia. Dado que cada tarea que utiliza el modo de red `awsvpc` requiere una interfaz de red, normalmente solo puede ejecutar dos de esas tareas en este tipo de instancia. Esto puede provocar una infrautilización de la capacidad del clúster. Si habilita el enlace troncal de la interfaz de red elástica, puede aumentar la densidad de la interfaz de red para colocar un mayor número de tareas en cada instancia. Con el enlace troncal activado, una instancia `c5.large` puede tener hasta 12 interfaces de red. La instancia tiene la interfaz de red principal y Amazon ECS crea y asocia una interfaz de red “troncal” a la instancia. Como resultado, con esta configuración, puede ejecutar 10 tareas en la instancia en lugar de las dos tareas predeterminadas. Para más información, consulte [Enlace troncal de interfaces de red elástica](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html).

### Limitación de la API de interfaz de red elástica
<a name="eni-api-throttles"></a>

Cuando ejecuta tareas que utilizan el modo de red `awsvpc`, Amazon ECS se basa en las siguientes API de Amazon EC2. Cada una de estas API tiene diferentes limitadores de API. Para más información, consulte [Request throttling for the Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html).
+ CreateNetworkInterface
+ AttachNetworkInterface
+ DetachNetworkInterface
+ DeleteNetworkInterface
+ DescribeNetworkInterfaces
+ DescribeVpcs
+ DescribeSubnets
+ DescribeSecurityGroups
+ DescribeInstances

Si las llamadas a la API de Amazon EC2 se limitan durante los flujos de trabajo de aprovisionamiento de la interfaz de red elástica, el programador de servicios de Amazon ECS lo volverá a intentar automáticamente con retrasos exponenciales. En ocasiones, estos reintentos automáticos podrían provocar una demora en el lanzamiento de las tareas, lo que se traduce en velocidades de implementación más lentas. Cuando se produzca una limitación de las API, verá el mensaje `Operations are being throttled. Will try again later.` en los mensajes de eventos del servicio. Si experimenta limitaciones constantes de las API de Amazon EC2, puede ponerse en contacto con Soporte para obtener orientación sobre cómo aumentar sus límites de limitación de las API. Para obtener más información acerca de la supervisión y la solución de problemas tales como errores de limitación, consulte [Handling throttling issues](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/operating-at-scale-dealing-with-throttles.html).

## AWS Cloud Map
<a name="cloudmap"></a>

La detección de servicios de Amazon ECS utiliza las API de AWS Cloud Map para administrar los espacios de nombres de los servicios de Amazon ECS. Si sus servicios tienen un gran número de tareas, tenga en cuenta las siguientes recomendaciones. Para más información, consulte [Consideraciones de la detección de servicios de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html#service-discovery-considerations).

### AWS Cloud MapCuotas de servicio de
<a name="cloudmap-service-quotas"></a>

Cuando los servicios de Amazon ECS están configurados para utilizar la detección de servicios, la cuota `Tasks per service`, que es el número máximo de tareas para el servicio, se ve afectada por la cuota de servicio `Instances per service` de AWS Cloud Map, que es el número máximo de instancias para ese servicio. En concreto, la cuota de servicio AWS Cloud Map reduce la cantidad de tareas que puede ejecutar hasta un máximo de 1000 tareas de servicio. No se puede cambiar la cuota AWS Cloud Map. Para más información, consulte [Service Quotas de AWS Cloud Map](https://docs.aws.amazon.com/general/latest/gr/cloud_map.html).

### AWS Cloud MapLimitación de API de
<a name="cmap-api-throttles"></a>

Amazon ECS llama a las API `ListInstances`, `GetInstancesHealthStatus`, `RegisterInstance` y `DeregisterInstance` de AWS Cloud Map en su nombre. Ayudan en la detección de servicios y en la ejecución de comprobaciones de estado al lanzar una tarea. Cuando se implementan varios servicios que utilizan la detección de servicios con una gran cantidad de tareas al mismo tiempo, esto puede provocar que se superen los límites de limitación de las API de AWS Cloud Map. Cuando esto suceda, es probable que vea el siguiente mensaje: `Operations are being throttled. Will try again later` en los mensajes de eventos del servicio de Amazon ECS y una velocidad de implementación y lanzamiento de tareas más lenta. AWS Cloud Map no documenta los límites de limitación de estas API. Si experimenta limitaciones, puede ponerse en contacto con Soporte para obtener orientación sobre cómo aumentar sus límites de limitación de las API. Para más recomendaciones sobre la supervisión y la solución de problemas tales como los errores de limitación, consulte [Gestión de errores de limitación](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/operating-at-scale-dealing-with-throttles.html).

# Gestión de los problemas de limitación de Amazon ECS
<a name="operating-at-scale-dealing-with-throttles"></a>

Los errores de limitación se dividen en dos categorías principales: limitación sincrónica y limitación asíncrona.

## Limitación sincrónica
<a name="synchronous-throttling"></a>

Cuando se produce una limitación sincrónica, recibirá inmediatamente una respuesta de error de Amazon ECS. Esta categoría suele producirse cuando llama a las API de Amazon ECS mientras ejecuta tareas o crea servicios. Para obtener más información sobre la limitación en cuestión y los límites de limitación relevantes, consulte [Request throttling for the Amazon ECS API](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/request-throttling.html).

Cuando su aplicación inicia solicitudes de API, por ejemplo, mediante la AWS CLI o un AWS SDK, puede corregir la limitación de las API. Para ello, puede diseñar la arquitectura de la aplicación para gestionar los errores o implementar una estrategia de retroceso exponencial y fluctuación con lógica de reintento para las llamadas a la API. Para obtener más información, consulte [Tiempos de espera, reintentos y retardo con fluctuación](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/).

Si utiliza un SDK de AWS, la lógica de reintento automática ya está integrada y es configurable.

## Limitación asíncrona
<a name="asynchronous-throttling"></a>

La limitación asíncrona se produce debido a flujos de trabajo asíncronos en los que Amazon ECS o CloudFormation podrían estar llamando a las API en su nombre para aprovisionar recursos. Es importante saber qué API de AWS invoca Amazon ECS en su nombre. Por ejemplo, la API `CreateNetworkInterface` se invoca para las tareas que utilizan el modo de red `awsvpc` y se invoca la API `DescribeTargetHealth` cuando se llevan a cabo comprobaciones de estado de las tareas registradas en un equilibrador de carga.

Cuando sus cargas de trabajo alcanzan una escala considerable, es posible que estas operaciones de la API se vean limitadas. Es decir, podrían estar lo suficientemente limitadas como para superar los límites impuestos por Amazon ECS o el Servicio de AWS al que se llama. Por ejemplo, si implementa cientos de servicios, cada uno con cientos de tareas simultáneas que utilizan el modo de red `awsvpc`, Amazon ECS invoca las operaciones de la API de Amazon EC2, como `CreateNetworkInterface` y las operaciones de la API de Elastic Load Balancing, como `RegisterTarget` o `DescribeTargetHealth` para registrar la interfaz de red elástica y el equilibrador de carga, respectivamente. Estas llamadas a la API pueden superar los límites de la API y provocar errores de limitación. El siguiente es un ejemplo de un error de limitación de Elastic Load Balancing que se incluye en el mensaje de evento del servicio.

```
{
   "userIdentity":{
      "arn":"arn:aws:sts::111122223333:assumed-role/AWSServiceRoleForECS/ecs-service-scheduler",
      "eventTime":"2022-03-21T08:11:24Z",
      "eventSource":"elasticloadbalancing.amazonaws.com",
      "eventName":" DescribeTargetHealth ",
      "awsRegion":"us-east-1",
      "sourceIPAddress":"ecs.amazonaws.com",
      "userAgent":"ecs.amazonaws.com",
      "errorCode":"ThrottlingException",
      "errorMessage":"Rate exceeded",
      "eventID":"0aeb38fc-229b-4912-8b0d-2e8315193e9c"
   }
}
```

Cuando estas llamadas a la API comparten límites con el resto del tráfico de la API de su cuenta, puede resultar difícil supervisarlas aunque se emitan como eventos de servicio.

## Supervisión de la limitación
<a name="monitoring-throttling"></a>

Es importante identificar qué solicitudes de la API están limitadas y quién las emite. Puede utilizar AWS CloudTrail, que supervisa la limitación y se integra con CloudWatch, Amazon Athena y Amazon EventBridge. Puede configurar CloudTrail para enviar eventos a Registros de CloudWatch. Información de registros de CloudWatch analiza los eventos. Esto identifica los detalles de los eventos de limitación, como el usuario o el rol de IAM que hizo la llamada y el número de llamadas a la API que se hicieron. Para obtener más información, consulte [Monitoring CloudTrail log files with CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html).

Para obtener más información acerca de Información de registros de CloudWatch e instrucciones sobre cómo consultar los archivos de registro, consulte [Analyzing log data with CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

Con Amazon Athena, puede crear consultas y analizar datos mediante SQL estándar. Por ejemplo, puede crear una tabla de Athena para analizar eventos de CloudTrail. Para obtener más información, consulte [Using the CloudTrail console to create an Athena table for CloudTrail logs](https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-ct).

Tras crear una tabla de Athena, puede utilizar consultas SQL como la siguiente para investigar los errores `ThrottlingException`.

Sustituya las *entradas del usuario* por sus valores.

```
select eventname, errorcode,eventsource,awsregion, useragent,COUNT(*) count
FROM cloudtrail_table-name
where errorcode = 'ThrottlingException'
AND eventtime between '2024-09-24T00:00:08Z' and '2024-09-23T23:15:08Z'
group by errorcode, awsregion, eventsource, useragent, eventname
order by count desc;
```

Amazon ECS también emite notificaciones de eventos a Amazon EventBridge. Hay eventos de cambio de estado de los recursos y eventos de acción del servicio. Pueden ser eventos de limitación de API como `ECS_OPERATION_THROTTLED` y `SERVICE_DISCOVERY_OPERATION_THROTTLED`. Para obtener más información, consulte [Eventos de acciones de servicio de Amazon ECS](ecs_service_events.md).

Un servicio, como, por ejemplo, AWS Lambda, puede consumir estos eventos para llevar a cabo acciones en respuesta. Para obtener más información, consulte [Control de eventos de Amazon ECS](ecs_cwet_handling.md). 

Si ejecuta tareas independientes, algunas operaciones de la API, como `RunTask`, serán asíncronas, y las operaciones de reintento no se harán automáticamente. En esos casos, puede utilizar servicios como AWS Step Functions con la integración de EventBridge para volver a intentar operaciones limitadas o fallidas. Para obtener más información, consulte [Manage a container task (Amazon ECS, Amazon SNS)](https://docs.aws.amazon.com/step-functions/latest/dg/sample-project-container-task-notification.html).

## Uso de CloudWatch para supervisar la limitación
<a name="monitoring-throttling-cw"></a>

CloudWatch ofrece la supervisión del uso de las API en el espacio de nombres `Usage`, en **Por recurso de AWS**. Estas métricas se registran con el tipo **API** y el nombre de métrica **CallCount**. Puede crear alarmas para que se inicien cada vez que estas métricas alcancen un determinado umbral. Para obtener más información acerca, consulte [Visualización de las cuotas de servicio y configuración de alarmas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Quotas-Visualize-Alarms.html).

CloudWatch también ofrece detección de anomalías. Esta característica utiliza machine learning para analizar y establecer líneas de base en función del comportamiento concreto de la métrica en la que se ha activado. Si hay actividad inusual en la API, puede utilizar esta característica junto con las alarmas de CloudWatch. Para obtener más información, consulte [Uso de la detección de anomalías de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html).

Al supervisar de forma proactiva los errores de limitación, puede ponerse en contacto con Soporte para aumentar los límites de limitación pertinentes y, además, recibir orientación sobre las necesidades específicas de su aplicación.