Gestión de los problemas de limitación de Amazon ECS - Amazon Elastic Container Service

Gestión de los problemas de limitación de Amazon ECS

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

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.

Cuando su aplicación inicia solicitudes de API, por ejemplo, mediante la AWS CLI o un SDK de AWS, puede corregir la limitación de la 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.

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

Limitación asíncrona

La limitación asíncrona se produce debido a flujos de trabajo asíncronos en los que Amazon ECS o AWS 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

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.

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.

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.

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

select eventname, errorcode,eventsource,awsregion, useragent,COUNT(*) count FROM cloudtrail-table-name where errorcode = 'ThrottlingException' AND eventtime between '2022-01-14T03:00:08Z' and '2022-01-23T07:15:08Z' group by errorcode, awsregion, eventsource, username, 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.

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.

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).

Uso de CloudWatch para supervisar la limitación

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.

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.

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