Prepare-se para a retirada de tarefas do AWS Fargate no Amazon ECS - Amazon Elastic Container Service

Prepare-se para a retirada de tarefas do AWS Fargate no Amazon ECS

Para se preparar para a retirada da tarefa, execute as seguintes operações:

  1. Defina o período de espera para retirada da tarefa ou use as janelas de eventos do Amazon EC2.

  2. Capture notificações de retirada de tarefas para notificar os membros da equipe.

  3. Você pode garantir que todas as tarefas dos seus serviços sejam executadas na revisão da versão mais recente da plataforma, ao atualizar o serviço com a opção de implantação forçada. Esta etapa é opcional.

Etapa 1: defina o tempo de espera da tarefa ou use as janelas de eventos do Amazon EC2.

Você tem duas opções de configuração de conta para definir a hora em que o Fargate inicia as retiradas de tarefas: fargateTaskRetirementWaitPeriod e fargateEventWindows.

Usar a configuração da conta fargateTaskRetirementWaitPeriod

É possível configurar a hora em que o Fargate inicia a retirada da tarefa. O período de espera padrão é de 7 dias. Para workloads que exijam a aplicação imediata das atualizações, escolha a configuração imediata (0). Se precisar de mais tempo, configure a opção de 7 ou 14 dias.

Recomendamos que você escolha um período de espera mais curto para receber as revisões das versões da plataforma mais recentes mais cedo.

Configure o período de espera executando put-account-setting-default ou put-account-setting como usuário-raiz ou um usuário administrativo. Use a opção fargateTaskRetirementWaitPeriod para o name e a opção value definida como um dos valores a seguir:

  • 0: A AWS envia a notificação e imediatamente começa a retirar as tarefas afetadas.

  • 7: A AWS envia a notificação e aguarda 7 dias corridos antes de começar a retirar as tarefas afetadas. Esse é o padrão.

  • 14: A AWS envia a notificação e aguarda 14 dias corridos antes de começar a retirar as tarefas afetadas.

Para obter mais informações, consulte put-account-setting-default e put-account-setting na Referência de API do Amazon Elastic Container Service.

Usar a configuração da conta fargateEventWindows

A partir de 18/12/2025, o Amazon ECS permite que você configure janelas de eventos do Amazon EC2 para suas tarefas do Fargate. Se você precisar de um controle preciso sobre o momento exato das retiradas de tarefas, por exemplo, programando-as nos finais de semana para evitar interrupções durante o horário comercial, você pode configurar janelas de eventos do Amazon EC2 para suas tarefas, serviços ou clusters.

Quando você usa janelas de eventos, o Fargate garante que suas tarefas sejam executadas por pelo menos 3 dias antes de serem retiradas na próxima janela disponível, a menos que sejam interrompidas por ações iniciadas pelo usuário ou eventos críticos de integridade, como degradação do hardware subjacente.

Defina a configuração da conta fargateEventWindows como enabled. Você pode usar uma das seguintes APIs: put-account-setting-default ou put-account-setting como usuário-raiz ou usuário administrativo.

Cada janela de evento do Amazon EC2 deve estar aberta por pelo menos 4 horas por semana e cada intervalo de tempo deve ter pelo menos 2 horas de duração. Para grandes clusters e serviços, recomendamos configurar janelas de eventos com durações longas (8 horas ou mais) ou intervalos de tempo mais frequentes que ocorram pelo menos uma vez a cada 3 dias. Consulte mais detalhes sobre as janelas de eventos do Amazon EC2 no guia do usuário. O AWS Fargate garante que suas tarefas sejam executadas por pelo menos 3 dias antes de serem retiradas, a menos que sejam interrompidas por ações iniciadas pelo usuário ou eventos críticos de integridade, como a degradação do hardware subjacente.

Importante

A substituição de tarefas na janela do evento é a melhor opção. Se você notar que as tarefas estão sendo retiradas fora das janelas do evento, considere expandir a duração (8 horas ou mais) ou aumentar a frequência (pelo menos uma vez a cada 3 dias).

Para aplicar janelas de eventos do Amazon EC2 às retiradas de suas tarefas do Fargate:

  • Defina a configuração da conta fargateEventWindows como enabled. Você pode usar uma das seguintes APIs: put-account-setting-default ou put-account-setting como usuário-raiz ou usuário administrativo. Observe que essa é uma habilitação única para o uso do atributo de janelas de eventos do Amazon EC2 para suas tarefas do Fargate.

  • Crie uma janela de eventos do Amazon EC2 por meio do console da AWS ou da AWS CLI. Para criar uma janela de eventos usando a CLI, use a API create-instance-event-window do EC2 com intervalos de tempo ou expressões cron. Anote o valor do InstanceEventWindowId na resposta.

    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, você pode usar expressões cron ao criar janelas de eventos do 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
  • Em seguida, você pode associar a janela do evento a serviços específicos, clusters ou a todas as tarefas em sua conta usando a API associate-instance-event-window do EC2.

    • Para tarefas de serviço do 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 cluster do 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 associar uma janela de eventos a todas as tarefas na conta

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

Você pode usar mais de um par chave-valor para associar uma janela de eventos a vários serviços ou clusters.

O Fargate escolherá a janela do eventos para cada tarefa na seguinte ordem:

  • Se houver uma janela de eventos associada ao serviço da tarefa, ela será usada. Isso não se aplica a tarefas autônomas ou não gerenciadas.

  • Se houver uma janela de eventos associada ao cluster da tarefa, ela será usada.

  • Se houver uma janela de evento definida para todas as tarefas do Fargate, ela será usada.

  • A configuração fargateTaskRetirementWaitPeriod será usada se nenhuma das janelas de eventos corresponder à tarefa.

Configurar janelas de eventos para manutenção de tarefas do Fargate

Considere um caso em que você está executando vários serviços do ECS no Fargate com diferentes requisitos de disponibilidade. Você quer um controle preciso sobre as retiradas de tarefas. Você pode configurar várias janelas de eventos da seguinte forma:

  • Manutenção padrão para todas as tarefas do Fargate: crie uma janela de eventos para manutenção de rotina fora do horário de pico (diariamente da 0h às 4h) e associe-a a todas as tarefas do Fargate usando a tag aws:ecs:fargateTask.

  • Manutenção somente no fim de semana para o cluster de desenvolvimento: para um cluster de desenvolvimento com serviços que podem tolerar interrupções nos finais de semana, crie uma janela de 24 horas no fim de semana (sábado e domingo, o dia todo) e associe-a ao cluster usando a tag aws:ecs:clusterArn com o ARN do seu cluster.

  • Período restrito para serviços essenciais: para um serviço de processamento de pagamentos de missão crítica que exige alto tempo de atividade durante a semana, restrinja a manutenção às primeiras horas da manhã do fim de semana (sábado e domingo, da 0h às 4h) e associe-a ao serviço específico usando a tag aws:ecs:serviceArn com o ARN do serviço.

Com essa configuração, o serviço de pagamento usa sua janela específica somente para fins de semana, os serviços e tarefas do cluster de desenvolvimento usam a janela de 24 horas do fim de semana e todas as demais tarefas do Fargate usam a janela de manutenção diária padrão.

Para obter mais informações, consulte put-account-setting-default e put-account-setting na Referência de API do Amazon Elastic Container Service.

Etapa 2: capturar as notificações de retiradas de tarefas para alertar as equipes e tomar medidas

Quando houver um retirada de tarefa próxima, a AWS envia uma notificação de retirada de tarefa para o Painel do AWS Health e para o contato de e-mail principal na Conta da AWS. O Painel do AWS Health fornece várias integrações com outros serviços da AWS, incluindo o Amazon EventBridge. É possível usar o EventBridge para criar automações a partir de uma notificação de retirada de tarefa, como aumentar a visibilidade da próxima retirada, ao encaminhar a mensagem para uma ferramenta ChatOps. AWS Health O Aware é um recurso que mostra o poder do Painel do AWS Health e como as notificações podem ser distribuídas por toda a organização. Você pode encaminhar uma notificação de retirada de tarefa para um aplicativo de bate-papo, como o Slack.

A ilustração a seguir mostra a visão geral da solução.

Diagrama mostrando a solução Fargate para capturar avisos de retirada de tarefas do Fargate.

As informações a seguir fornecem detalhes.

  • O Fargate envia a notificação de retirada da tarefa para o Painel do AWS Health.

  • O Painel do AWS Health envia e-mail para o contato de e-mail principal na Conta da AWS e notifica o EventBridge.

  • O EventBridge tem uma regra que captura a notificação de retirada.

    A regra de busca de eventos com o tipo de detalhe do evento: "AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT"

  • A regra aciona uma função do Lambda que encaminha as informações para o Slack usando um webhook de entrada do Slack. Para obter mais informações, consulte Webhooks de entrada.

Para ver um exemplo de código, consulte Capturing AWS Fargate Task Retirement Notifications no Github.

Etapa 3: controlar a retirada de tarefas

Você não pode controlar o momento exato da retirada de uma tarefa, no entanto, você pode definir um tempo de espera. Se quiser controlar a retirada de tarefas de acordo com sua própria programação, é possível capturar o aviso de retirada da tarefa para primeiro entender a data de retirada da tarefa. Você pode então reimplantar seu serviço para iniciar retiradas de tarefas e, da mesma forma, substituir quaisquer tarefas autônomas. Para serviços que usam implantação contínua, você atualiza o serviço usando update-service com a opção force-deployment antes do horário de início da retirada.

O exemplo update-service a seguir usa a opção force-deployment.

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

Em serviços que usam a implantação azul/verde, você precisa criar uma implantação no AWS CodeDeploy. Para obter informações sobre como criar a implantação, consulte create-deployment na Referência da AWS Command Line Interface.