Preguntas frecuentes sobre el mantenimiento de tareas de AWS Fargate en Amazon ECS - Amazon Elastic Container Service

Preguntas frecuentes sobre el mantenimiento de tareas de AWS Fargate en Amazon ECS

¿Qué es el mantenimiento y el retiro de tareas de Fargate?

AWS es responsable del mantenimiento de la infraestructura subyacente de AWS Fargate. AWS determina cuándo se debe reemplazar una revisión de versión de la plataforma por una nueva revisión de la infraestructura. Esto se conoce como retiro de tareas. AWS envía una notificación de retiro de tareas cuando se retira una revisión de la versión de la plataforma. Actualizamos periódicamente las versiones de nuestras plataformas admitidas para introducir una nueva revisión que contenga actualizaciones del software de tiempo de ejecución de Fargate y de las dependencias subyacentes, como el sistema operativo y el tiempo de ejecución del contenedor. Una vez que una revisión más reciente esté disponible, retiramos la anterior para garantizar que todas las cargas de trabajo de los clientes se ejecuten con la versión más actualizada de la plataforma Fargate. Cuando se retira una revisión, se detienen todas las tareas que se estén ejecutando en esa revisión.

Las tareas de Amazon ECS se pueden clasificar como tareas de servicio o tareas independientes. Las tareas de servicio se implementan como parte de un servicio y son controladas por la programación de Amazon ECS. Para obtener más información, consulte Servicios de Amazon ECS. Las tareas independientes son tareas que se inician mediante la API RunTask de Amazon ECS, ya sea directamente o mediante un programador externo, como las tareas programadas (que inicia Amazon EventBridge), AWS Batch o AWS Step Functions.

En el caso de las tareas de servicio, no es necesario que haga nada a menos que desee sustituirlas antes de que AWS lo haga. Cuando el programador de Amazon ECS detiene tareas, utiliza el porcentaje mínimo en buen estado e inicia una nueva tarea en un intento por mantener el recuento deseado para el servicio. De forma predeterminada, el porcentaje mínimo en buen estado de un servicio es del 100 %, por lo que la tarea nueva se inicia primero antes de detenerla. Las tareas de servicio se sustituyen de forma rutinaria de la misma manera cuando se escala el servicio o se implementan cambios de configuración o revisiones de la definición de tareas. Para prepararse para el proceso de retiro de tareas, se recomienda probar el comportamiento de la aplicación mediante la simulación de este escenario. Puede hacerlo deteniendo una tarea individual en su servicio para probar la resistencia.

Para el retiro de una tarea independiente, AWS detiene la tarea en la fecha de retiro de esta o después. No se inicia una tarea de sustitución cuando se detiene una tarea. Si necesita que estas tareas sigan ejecutándose, debe detenerlas e iniciar una tarea de sustitución antes de la hora indicada en la notificación. Por lo tanto, recomendamos que los clientes supervisen el estado de las tareas independientes y, si es necesario, implementen la lógica para reemplazar las tareas detenidas.

Cuando una tarea se detiene en cualquiera de los escenarios anteriores, puede ejecutar describe-tasks. El código stoppedReason que aparece en la respuesta es ECS is performing maintenance on the underlying infrastructure hosting the task.

El mantenimiento de las tareas se aplica cuando se debe sustituir una nueva revisión de versión de la plataforma por una nueva revisión. Si hay un problema con un host de Fargate subyacente, Amazon ECS sustituye el host sin un aviso de retiro de la tarea.

¿Qué muestra el aviso de retiro de tareas?

Las notificaciones de retiro de tareas se envían a través del panel de control de AWS Health y por correo electrónico a la dirección de correo electrónico registrada. Dichas notificaciones incluyen la siguiente información:

  • La fecha de retiro de la tarea: la tarea se detiene en esta fecha o después de ella.

  • En el caso de las tareas independientes, los ID de las tareas.

  • En el caso de las tareas de servicio, el ID del clúster en el que se ejecuta el servicio y los ID del servicio.

  • Los siguientes pasos que debe seguir.

Por lo general, se envía una notificación para cada una de las tareas de servicio y tareas independientes de cada Región de AWS. Sin embargo, en algunos casos, es posible que reciba más de un evento por cada tipo de tarea; por ejemplo, cuando hay tantas tareas que deben ser retiradas que sobrepasan los límites de nuestros mecanismos de notificación.

Puede identificar tareas programadas para retirarse de las siguientes formas:

  • Con la AWS Health Dashboard

    Las notificaciones de AWS Health se pueden enviar por Amazon EventBridge para almacenarse en archivos, como Amazon Simple Storage Service, llevar a cabo acciones automatizadas, como ejecutar una función AWS Lambda, o hacia otros sistemas de notificaciones, como Amazon Simple Notification Service. Para más información, consulte Supervisión de eventos de AWS Health con Amazon EventBridge). Para configurar muestras para enviar notificaciones a Amazon Chime, Slack o Microsoft Teams, consulte el repositorio de AWS Health Aware en GitHub.

    A continuación, se muestra un evento de EventBridge como ejemplo.

    { "version": "0", "id": "3c268027-f43c-0171-7425-1d799EXAMPLE", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2023-08-16T23:18:51Z", "region": "us-east-1", "resources": [ "cluster/service", "cluster/service" ], "detail": { "eventArn": "arn:aws:health:us-east-1::event/ECS/AWS_ECS_TASK_PATCHING_RETIREMENT/AWS_ECS_TASK_PATCHING_RETIREMENT_test1", "service": "ECS", "eventScopeCode": "ACCOUNT_SPECIFIC", "communicationId": "7988399e2e6fb0b905ddc88e0e2de1fd17e4c9fa60349577446d95a18EXAMPLE", "lastUpdatedTime": "Wed, 16 Aug 2023 23:18:52 GMT", "eventRegion": "us-east-1", "eventTypeCode": "AWS_ECS_TASK_PATCHING_RETIREMENT", "eventTypeCategory": "scheduledChange", "startTime": "Wed, 16 Aug 2023 23:18:51 GMT", "endTime": "Fri, 18 Aug 2023 23:18:51 GMT", "eventDescription": [ { "language": "en_US", "latestDescription": "\\nA software update has been deployed to Fargate which includes CVE patches or other critical patches. No action is required on your part. All new tasks launched automatically uses the latest software version. For existing tasks, your tasks need to be restarted in order for these updates to apply. Your tasks running as part of the following ECS Services will be automatically updated beginning Wed, 16 Aug 2023 23:18:51 GMT.\\n\\nAfter Wed, 16 Aug 2023 23:18:51 GMT, the ECS scheduler will gradually replace these tasks, respecting the deployment settings for your service. Typically, services should see little to no interruption during the update and no action is required. When AWS stops tasks, AWS uses the minimum healthy percent (1) and launches a new task in an attempt to maintain the desired count for the service. By default, the minimum healthy percent of a service is 100 percent, so a new task is started first before a task is stopped. Service tasks are routinely replaced in the same way when you scale the service or deploy configuration changes or deploy task definition revisions. If you would like to control the timing of this restart you can update the service before Wed, 16 Aug 2023 23:18:51 GMT, by running the update-service command from the ECS command-line interface specifying force-new-deployment for services using Rolling update deployment type. For example:\\n\\n$ aws ecs update-service -service service_name \\\n--cluster cluster_name -force-new-deployment\\n\\nFor services using Blue/Green deployment type with AWS CodeDeploy:\\nPlease refer to create-deployment document (2) and create new deployment using same task definition revision.\\n\\nFor further details on ECS deployment types, please refer to ECS Deployment Developer Guide (1).\\nFor further details on Fargate's update process, please refer to the AWS Fargate User Guide (3).\\nIf you have any questions or concerns, please contact AWS Support (4).\\n\\n(1) https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html\\n(2) https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html\\n(3) https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-maintenance.html\\n(4) https://aws.amazon.com/support\\n\\nA list of your affected resources(s) can be found in the 'Affected resources' tab in the 'Cluster/ Service' format in the AWS Health Dashboard. \\n\\n" } ], "affectedEntities": [ { "entityValue": "cluster/service" }, { "entityValue": "cluster/service" } ] } }
  • Correo electrónico

    Se envía un correo electrónico al correo electrónico registrado para obtener el ID de la Cuenta de AWS.

¿Puedo cambiar el tiempo de espera para el retiro de las tareas?

Puede configurar la hora a la que Fargate inicia el retiro de las tareas. Para las cargas de trabajo que requieren la aplicación inmediata de las actualizaciones, elija la configuración inmediata (0). Cuando necesite más control, por ejemplo, cuando una tarea solo se pueda detener durante un período determinado, configure la opción de 7 días (7) o 14 días (14).

Le recomendamos que elija un período de espera más corto para poder seleccionar antes las revisiones de las versiones más recientes de la plataforma.

Para configurar el periodo de espera, ejecute put-account-setting-default o put-account-setting como usuario raíz o como usuario administrativo. Utilice la opción fargateTaskRetirementWaitPeriod para el conjunto de opciones name y value para uno de los valores siguientes:

  • 0 - AWS envía la notificación e inmediatamente comienza a retirar las tareas afectadas.

  • 7 - AWS envía la notificación y espera 7 días calendario antes de empezar a retirar las tareas afectadas.

  • 14 - AWS envía la notificación y espera 14 días calendario antes de empezar a retirar las tareas afectadas.

El valor predeterminado es 7 días.

Para obtener más información, consulte put-account-setting-default y put-account-setting en la Referencia de la API de Amazon Elastic Container Service.

Para obtener más información, consulte Tiempo de espera para el retiro de tareas de AWS Fargate.

¿Puedo recibir notificaciones de retiro de tareas a través de otros servicios de AWS?

AWS envía una notificación de retiro de tareas a AWS Health Dashboard y al contacto de correo electrónico principal de la Cuenta de AWS. AWS Health Dashboard ofrece una serie de integraciones en otros servicios de AWS, incluido EventBridge. Puede utilizar EventBridge para automatizar la visibilidad de los avisos (por ejemplo, reenviar el mensaje a una herramienta de ChatOps). Para más información, consulte Solution overview: Capturing task retirement notifications.

¿Puedo cambiar el retiro de una tarea una vez programada?

No. La programación se basa en el tiempo de espera para el retiro de la tarea, que tiene un valor predeterminado de 7 días. Si necesita más tiempo, puede optar por configurar el periodo de espera en 14 días. Para obtener más información, consulte ¿Puedo cambiar el tiempo de espera para el retiro de las tareas?. El cambio en esta configuración se aplica a los retiros que se programarán en el futuro. Los retiros programados actualmente no se ven afectados. Si tiene algún problema, póngase en contacto con AWS Support.

¿Puedo controlar el tiempo de sustitución de una tarea?

En el caso de los servicios que utilizan una implementación continua, se actualiza el servicio mediante update-service con la opción force-deployment antes de la hora de inicio del retiro.

En este ejemplo de update-service se usa la opción force-deployment.

aws ecs update-service —-service service_name \ --cluster cluster_name \ --force-new-deployment

Para los servicios que utilizan la implementación azul/verde, debe crear una nueva implementación en AWS CodeDeploy. Para obtener información sobre cómo crear la implementación, consulte create-deployment en la Referencia de la AWS Command Line Interface.

¿Cómo administra Amazon ECS las tareas que forman parte de un servicio?

Amazon ECS sustituirá gradualmente las tareas afectadas de su servicio cuando comience el período de retiro de Fargate. Cuando Amazon ECS detiene una tarea, utiliza el porcentaje mínimo en buen estado del servicio e inicia una nueva tarea para mantener el recuento de tareas deseado para el servicio. Una nueva tarea se inicia antes de que se detenga, ya que el porcentaje mínimo en buen estado predeterminado es 100. Las tareas de servicio se sustituyen de forma rutinaria de la misma manera cuando se escala el servicio o se implementan cambios de configuración o revisiones de la definición de tareas. Para más información acerca del porcentaje mínimo en buen estado, consulte Configuración de implementación.

¿Amazon ECS puede administrar automáticamente las tareas independientes?

No. AWS no puede crear una tarea de sustitución para las tareas independientes que inicie RunTask, tareas programadas (por ejemplo, a través del Programador de EventBridge), AWS Batch o AWS Step Functions. Amazon ECS solo administra las tareas que forman parte de un servicio.