Prepárese para la retirada de tareas de AWS Fargate en Amazon ECS - Amazon Elastic Container Service

Prepárese para la retirada de tareas de AWS Fargate en Amazon ECS

Para prepararse para la retirada de las tareas, lleve a cabo las siguientes operaciones:

  1. Establezca el periodo de espera para el retiro de tareas o utilice las ventanas de eventos de Amazon EC2.

  2. Capture las notificaciones de retirada de tareas para notificarlas a los miembros del equipo.

  3. Puede garantizar la ejecución de todas las tareas de sus servicios en la última revisión de la plataforma mediante la actualización del servicio con la opción de implementación forzosa. Este paso es opcional.

Paso 1: establezca el periodo de espera para la tarea o utilice las ventanas de eventos de Amazon EC2

Tiene dos opciones de configuración de cuenta para configurar la hora en que Fargate inicia el retiro de tareas: fargateTaskRetirementWaitPeriod y fargateEventWindows.

Uso de la configuración de cuenta fargateTaskRetirementWaitPeriod

Puede configurar la hora a la que Fargate inicia el retiro de las tareas. El periodo de espera predeterminado es de 7 días. Para las cargas de trabajo que requieren la aplicación inmediata de las actualizaciones, elija la configuración inmediata (0). Si necesita más tiempo, configure la opción de 7 o 14 días.

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. Esta es la opción predeterminada.

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

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.

Uso de la configuración de la cuenta fargateEventWindows

A partir del 18 de diciembre de 2025, Amazon ECS le permitirá configurar las ventanas de eventos de Amazon EC2 para sus tareas de Fargate. Si necesita controlar con precisión el momento exacto en que se retiran las tareas, por ejemplo, para programarlas durante los fines de semana a fin de evitar interrupciones durante el horario laboral, puede configurar las ventanas de eventos de Amazon EC2 para sus tareas, servicios o clústeres.

Cuando utiliza ventanas de eventos, Fargate se asegura de que sus tareas se ejecuten durante al menos 3 días antes de que se retiren en el siguiente período disponible, a menos que se detengan por acciones iniciadas por el usuario o por eventos de integridad críticos, como la degradación del hardware subyacente.

Establezca el ajuste de cuenta fargateEventWindows en enabled. Puede usar una de las siguientes API: put-account-setting-default o put-account-setting como usuario raíz o un usuario administrativo.

Cada ventana de evento de Amazon EC2 debe permanecer abierta por al menos 4 horas a la semana, y cada rango individual debe ser de al menos 2 horas. Para clústeres y servicios grandes, recomendamos configurar ventanas de eventos con duraciones prolongadas (8 horas o más) o intervalos de tiempo más frecuentes que se produzcan al menos una vez cada 3 días. Puede revisar con más detalle las consideraciones sobre las ventanas de eventos de Amazon EC2 en la guía del usuario. AWS Fargate garantiza que sus tareas se ejecuten durante al menos 3 días antes de que se retiren, a menos que se detengan por acciones iniciadas por el usuario o por eventos de integridad críticos, como la degradación del hardware subyacente.

importante

Lo mejor es sustituir las tareas dentro de la ventana de eventos. Si observa que las tareas se retiran fuera de las ventanas de eventos, considere la posibilidad de ampliar la duración (8 horas o más) o aumentar la frecuencia (al menos una vez cada 3 días).

Para aplicar las ventanas de eventos de Amazon EC2 a los retiros de tareas de Fargate:

  • Establezca el ajuste de cuenta fargateEventWindows en enabled. Puede usar una de las siguientes API: put-account-setting-default o put-account-setting como usuario raíz o un usuario administrativo. Tenga en cuenta que se trata de una habilitación única para el uso de la característica de ventanas de eventos de Amazon EC2 para sus tareas de Fargate.

  • Cree una ventana de eventos de Amazon EC2 mediante la consola de AWS o la CLI de AWS. Para crear una ventana de eventos mediante CLI, utilice la API create-instance-event-window de EC2 con rangos de tiempo o expresiones cron. Anote la InstanceEventWindowId de la respuesta.

    aws ec2 create-instance-event-window \ --time-range StartWeekDay=monday,StartHour=2,EndWeekDay=wednesday,EndHour=8 \ --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1" \ --name myEventWindowName

    Como alternativa, puede utilizar expresiones cron durante la creación de ventanas de eventos de EC2.

    aws ec2 create-instance-event-window \ --cron-expression "* 21-23 * * 2,3" \ --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1" \ --name myEventWindowName
  • A continuación, puede asociar la ventana de eventos a servicios, clústeres o todas las tareas específicos de su cuenta mediante la API associate-instance-event-window de EC2.

    • Para tareas de servicio de ECS

      aws ec2 associate-instance-event-window \ --instance-event-window-id iew-0abcdef1234567890 \ --association-target "InstanceTags=[{Key=aws:ecs:serviceArn,Value=your-service-arn}]"
    • Para clústeres de ECS

      aws ec2 associate-instance-event-window \ --instance-event-window-id iew-0abcdef1234567890 \ --association-target "InstanceTags=[{Key=aws:ecs:clusterArn,Value=your-cluster-arn}]"
    • Para asociar una ventana de eventos a todas las tareas de la cuenta

      aws ec2 associate-instance-event-window \ --instance-event-window-id iew-0abcdef1234567890 \ --association-target "InstanceTags=[{Key=aws:ecs:fargateTask,Value=true}]"

Se puede usar más de un par clave-valor para asociar una ventana de eventos a servicios o clústeres múltiples.

Fargate elegirá la ventana de eventos para cada tarea en el siguiente orden:

  • Si hay una ventana de eventos asociada al servicio de la tarea, se utilizará. Esto no se aplica a las tareas independientes o no administradas.

  • Si hay una ventana de eventos asociada al clúster de la tarea, se utilizará.

  • Si hay una ventana de eventos configurada para todas las tareas de Fargate, se utilizará.

  • La configuración fargateTaskRetirementWaitPeriod se utilizará si ninguna de las ventanas de eventos coincide con la tarea.

Configuración de ventanas de eventos para el mantenimiento de tareas de Fargate

Considere un caso en el que ejecute varios servicios de ECS en Fargate con diferentes requisitos de disponibilidad. Desea tener un control preciso sobre el retiro de tareas. Puede configurar varias ventanas de eventos de la siguiente manera:

  • Mantenimiento predeterminado para todas las tareas de Fargate: cree una ventana de eventos para el mantenimiento de rutina fuera de las horas pico (de 12 a. m. a 4 a. m. todos los días) y asóciela a todas las tareas de Fargate mediante la etiqueta aws:ecs:fargateTask.

  • Mantenimiento exclusivo de fin de semana para un clúster de desarrollo: en el caso de un clúster de desarrollo con servicios que puedan tolerar interrupciones los fines de semana, cree un período de 24 horas los fines de semana (sábado y domingo, todo el día) y asócielo al clúster mediante la etiqueta aws:ecs:clusterArn del ARN del clúster.

  • Periodo restringido para un servicio de misión crítica: en el caso de un servicio de procesamiento de pagos de misión crítica que requiera un alto tiempo de actividad durante los días de semana, restrinja el mantenimiento a las primeras horas de la mañana de los fines de semana (sábados y domingos, de 12 a. m. a 4 a. m.) y asócielo al servicio específico mediante la etiqueta aws:ecs:serviceArn del ARN de su servicio.

Con esta configuración, el servicio de pago usa su ventana específica solo los fines de semana, los servicios y tareas del clúster de desarrollo usan la ventana de 24 horas los fines de semana, y todas las demás tareas de Fargate usan la ventana de mantenimiento diario predeterminada.

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.

Paso 2: Capture las notificaciones de retirada de tareas para alertar a los equipos y tomar medidas

Cuando hay una próxima retirada de tareas, AWS envía una notificación de retiro de tareas al panel AWS Health y al contacto de correo electrónico principal de Cuenta de AWS. El panel AWS Health ofrece una serie de integraciones en otros servicios de AWS, incluido Amazon EventBridge. Puede utilizar EventBridge para crear automatizaciones a partir de una notificación de retirada de tarea, como aumentar la visibilidad de la próxima retirada reenviando el mensaje a una herramienta de ChatOps. AWS Health Aware es un recurso que muestra el poder del panel AWS Health y cómo se pueden distribuir las notificaciones en toda la organización. Puede reenviar una notificación de retirada de una tarea a una aplicación de chat, como Slack.

La siguiente ilustración muestra información general de la solución.

Diagrama que muestra la solución de Fargate para capturar los avisos de retirada de tareas de Fargate.

La siguiente información proporciona detalles.

  • Fargate envía la notificación de retirada de la tarea al panel AWS Health.

  • El panel AWS Health envía un correo al contacto principal de correo electrónico de Cuenta de AWS, y lo notifica a EventBridge.

  • EventBridge tiene una regla que captura la notificación de retirada.

    La regla que busca eventos con el tipo de detalle del evento: "AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT"

  • La regla activa una función Lambda que reenvía la información a Slack mediante un webhook entrante de Slack. Para obtener más información, consulte Webhooks entrantes.

Para ver un ejemplo de código, consulte Cómo capturar notificaciones de retirada de tareas de AWS Fargate en Github.

Paso 3: Controle la sustitución de tareas

No puede controlar el momento exacto en que se retira una tarea, pero puede definir un tiempo de espera. Si quiere controlar la sustitución de tareas según su propio cronograma, puede capturar el aviso de retirada de la tarea para conocer primero la fecha de retirada de la tarea. A continuación, puede volver a implementar el servicio para lanzar tareas de sustitución y, del mismo modo, sustituir cualquier tarea independiente. Para los servicios que utilizan la implementación continua, actualice el servicio utilizando update-service con la opción force-deployment antes de la hora de inicio de la retirada.

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.