Retirada y mantenimiento de tareas para AWS Fargate en Amazon ECS - Amazon Elastic Container Service

Retirada y mantenimiento de tareas para AWS Fargate en Amazon ECS

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. No necesita realizar ninguna acción en respuesta a la retirada de tareas de sus tareas de servicio, ya que el programador de Amazon ECS reemplaza automáticamente las tareas.

En el caso de las tareas independientes, es posible que deba realizar una gestión adicional en respuesta a la retirada de la tarea. Para obtener más información, consulte ¿Amazon ECS puede administrar automáticamente las tareas independientes?.

En el caso de las tareas de servicio, no es necesario que realice ninguna acción de retirada de tareas, a menos que desee sustituirlas antes de que AWS lo haga. Cuando el programador de Amazon ECS detiene las tareas, utiliza el maximumPercent e inicia una nueva tarea en un intento por mantener el recuento deseado para el servicio. Para minimizar el impacto de la retirada de tareas de AWS Fargate, debe seguir las prácticas recomendadas de Amazon ECS al implementar cargas de trabajo. El valor predeterminado maximumPercent para un servicio que utiliza el programador de servicio REPLICA es 200 %. Por lo tanto, cuando AWS Fargate comienza a retirar tareas, Amazon ECS primero programa una nueva tarea y, a continuación, espera a que se ejecute antes de retirar una tarea anterior. Al establecer el valor maximumPercent en 100 %, Amazon ECS detiene primero la tarea y, a continuación, la reemplaza.

Para la retirada de una tarea independiente, AWS detiene la tarea en la fecha de retiro de la tarea o después de esa fecha. Amazon ECS no lanza una tarea de reemplazo 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.

Descripción general del aviso de retirada de tareas

Cuando AWS marca la necesidad de retirar una revisión de la versión de la plataforma, identificamos todas las tareas que se están ejecutando en esa revisión de la versión de la plataforma en todas las regiones. A continuación, enviamos una notificación por cuenta y región, en la que destacamos las tareas o los servicios afectados y la fecha en que comenzarán a producirse las retiradas.

La siguiente ilustración muestra el ciclo de vida de una revisión de la versión de la plataforma Fargate desde el lanzamiento de una nueva revisión hasta la retirada de la revisión de la plataforma.

Diagrama que muestra el ciclo de vida de la retirada de las tareas de Fargate.

La siguiente información proporciona detalles.

  • Tras lanzar una nueva revisión de la versión de la plataforma, todas las tareas nuevas se programan en esta revisión.

  • Las tareas existentes que se programaron y se están ejecutando permanecen en la revisión en la que se colocaron originalmente mientras dure la tarea, y no se migran a la nueva revisión.

  • Las nuevas tareas, por ejemplo, como parte de una actualización de un servicio o de la retirada de tareas de Fargate, se incluyen en la última versión de la plataforma disponible en el momento del lanzamiento.

Las notificaciones de retirada 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 retirada 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:

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

Para obtener información sobre cómo preparar una retirada de tareas, consulte Prepárese para la retirada de tareas de AWS Fargate en Amazon ECS .

¿Puedo no participar en el retiro de tareas?

No. Como parte del modelo de responsabilidad compartida deAWS, AWS es responsable de administrar y mantener la infraestructura subyacente para AWS Fargate. Esto incluye realizar actualizaciones periódicas de la plataforma para garantizar la seguridad y la estabilidad. Estas actualizaciones se aplican automáticamente por AWS, y los clientes no pueden optar por excluirlas. Esta es una ventaja clave del uso de AWS Fargate en comparación con la de ejecutar sus cargas de trabajo en instancias EC2, ya que AWS asume la responsabilidad de mantener la plataforma subyacente. Este modelo le permite centrarse en sus aplicaciones en lugar de en el mantenimiento de la infraestructura. Al aplicar automáticamente estas actualizaciones de la plataforma, AWS puede mantener el entorno de Fargate actualizado y seguro, sin que usted, como cliente, deba realizar ninguna acción. Esto ayuda a proporcionar un entorno contenerizado confiable y seguro para ejecutar sus cargas de trabajo en 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 Paso 2: Capture las notificaciones de retirada de tareas para alertar a los equipos y tomar medidas. 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 Soporte.

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

En el caso de las tareas de servicio, no es necesario que realice ninguna acción de retirada de tareas, 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. Para minimizar el impacto de la retirada de tareas de Fargate, las cargas de trabajo deben implementarse siguiendo las prácticas recomendadas de Amazon ECS. Por ejemplo, al implementar una aplicación sin estado como un servicio de Amazon ECS, como un servidor web o API, los clientes deben implementar múltiples réplicas de tareas y establecer el MinimumHethyPercent en 100 %. Por defecto, el valor del porcentaje mínimo de estado de un servicio es el 100 %. Por lo tanto, cuando Fargate comienza a retirar tareas, Amazon ECS primero programa una nueva tarea y espera a que se ejecute antes de retirar una tarea anterior. Las tareas de servicio se sustituyen de forma rutinaria como parte de la retirada de tareas, del mismo modo que cuando se escala el servicio, se implementan cambios de configuración o se implementan revisiones de la definición de tareas. Para prepararse para el retiro de tareas, consulte Prepárese para la retirada de tareas de AWS Fargate en Amazon ECS .

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