Perguntas frequentes sobre manutenção de tarefas do AWS Fargate no Amazon ECS - Amazon Elastic Container Service

Perguntas frequentes sobre manutenção de tarefas do AWS Fargate no Amazon ECS

O que é manutenção e retirada de tarefas do Fargate?

A AWS é responsável por manter a infraestrutura subjacente do AWS Fargate. A AWS determina quando uma revisão da versão da plataforma precisa ser substituída por uma nova revisão da infraestrutura. Isso é conhecido como retirada de tarefas. A AWS envia uma notificação de retirada da tarefa quando uma revisão da versão da plataforma é retirada. Atualizamos rotineiramente nossas versões da plataforma com suporte para introduzir uma revisão contendo atualizações do software de runtime do Fargate e dependências subjacentes, como o sistema operacional e o runtime do contêiner. Quando uma revisão mais recente é disponibilizada, retiramos a revisão mais antiga para garantir que todas as workloads do cliente sejam executadas na revisão mais atualizada da versão da plataforma do Fargate. Quando uma revisão é retirada, todas as tarefas em execução nessa revisão são interrompidas.

As tarefas do Amazon ECS podem ser categorizadas como tarefas de serviço ou tarefas autônomas. As tarefas de serviço são implantadas como parte de um serviço e controladas pela programação do Amazon ECS. Para ter mais informações, consulte Serviços do Amazon ECS. As tarefas autônomas são tarefas iniciadas pela API RunTask do Amazon ECS, diretamente ou por um agendador externo, como tarefas programadas (que são iniciadas pelo Amazon EventBridge), AWS Batch ou AWS Step Functions.

Para tarefas de serviço, você não precisa realizar nenhuma ação, a menos que queira substituí-las antes de a AWS fazê-lo. Quando o agendador do Amazon ECS interrompe as tarefas, ele usa a porcentagem mínima de integridade e executa uma nova tarefa na tentativa de manter a contagem desejada do serviço. Por padrão, o percentual mínimo de integridade de um serviço é de 100%, portanto, uma nova tarefa é iniciada antes de uma tarefa ser interrompida. As tarefas de serviço são substituídas rotineiramente da mesma forma ao escalar o serviço ou implantar alterações de configuração ou revisões de definição de tarefa. Para que você se prepare para esse novo processo, recomendamos testar o comportamento da aplicação simulando esse cenário. É possível fazer isso interrompendo uma tarefa individual em seu serviço para testar sua resiliência.

Para a retirada de tarefas autônomas, a AWS interrompe a tarefa na data de retirada ou após ela. Não executamos uma tarefa de substituição quando uma tarefa é interrompida. Se precisar que essas tarefas continuem em execução, é necessário interromper a execução delas e iniciar uma tarefa substituta antes da hora indicada na notificação. Portanto, recomendamos que os clientes monitorem o estado das tarefas autônomas e, se necessário, implementem a lógica para substituir as tarefas interrompidas.

Quando uma tarefa é interrompida em qualquer um dos cenários, é possível executar describe-tasks. O stoppedReason na resposta é ECS is performing maintenance on the underlying infrastructure hosting the task.

A manutenção de tarefas se aplica quando uma revisão da nova versão da plataforma precisa ser substituída por uma nova. Se houver um problema com um host subjacente do Fargate, o Amazon ECS substitui o host sem um aviso de retirada da tarefa.

O que está no aviso de retirada da tarefa?

As notificações de retirada da tarefa são enviadas por meio do AWS Health Dashboard e para o endereço de e-mail registrado e incluem as seguintes informações:

  • A data de retirada da tarefa: a tarefa é interrompida nessa data ou após essa data.

  • Para tarefas autônomas, os IDs das tarefas.

  • Para tarefas de serviço, o ID do cluster em que o serviço é executado e os IDs do serviço.

  • As próximas etapas que você precisa seguir.

Normalmente, enviamos uma notificação de serviço e tarefas autônomas em cada Região da AWS. No entanto, em alguns casos, você pode receber mais de um evento para cada tipo de tarefa, por exemplo, quando há muitas tarefas a serem retiradas que ultrapassarão os limites nos mecanismos de notificação.

É possível identificar tarefas programadas para retirada das maneiras a seguir:

  • A AWS Health Dashboard

    As notificações AWS Health podem ser enviadas por meio do Amazon EventBridge para que um armazenamento de arquivamento, como o Amazon Simple Storage Service, execute ações automatizadas, como executar uma função do AWS Lambda, ou outros sistemas de notificação, como o Amazon Simple Notification Service. Para obter mais informações, consulte Monitoramento de eventos do AWS Health com o Amazon EventBridge. Para obter um exemplo de configuração do envio de notificações para o Amazon Chime, Slack, ou Microsoft Teams, consulte o repositório AWS Health Aware no GitHub.

    Veja a seguir um exemplo de evento do EventBridge.

    { "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" } ] } }
  • E-mail

    Um email é enviado para o email registrado para obter o ID Conta da AWS.

Posso alterar o tempo de espera da retirada de tarefas?

É possível configurar a hora em que o Fargate inicia a retirada da tarefa. Para workloads que exijam a aplicação imediata das atualizações, escolha a configuração imediata (0). Quando precisar de mais controle, por exemplo, quando uma tarefa só puder ser interrompida durante uma determinada janela, configure a opção de 7 dias (7) ou 14 dias (14).

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.

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

O padrão são 7 dias.

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

Para ter mais informações, consulte Tempo de espera para a retirada da tarefa do AWS Fargate.

Posso receber notificações de retirada de tarefas por meio de outros serviços da AWS?

A AWS envia uma notificação de retirada da tarefa para o AWS Health Dashboard e para o principal contato de e-mail na Conta da AWS. O AWS Health Dashboard fornece várias integrações com outros serviços da AWS, incluindo o EventBridge. Você pode usar o EventBridge para automatizar a visibilidade dos avisos (por exemplo, encaminhar a mensagem para uma ferramenta de ChatOps). Para obter mais informações, consulte Solution overview: Capturing task retirement notifications.

Posso alterar a retirada de uma tarefa depois de programada?

Não. O cronograma é baseado no tempo de espera de retirada da tarefa, que tem um padrão de sete dias. Se precisar de mais tempo, você pode configurar o período de espera para 14 dias. Para ter mais informações, consulte Posso alterar o tempo de espera da retirada de tarefas?. A alteração nessa configuração se aplica às retiradas que serão programadas no futuro. As retiradas programadas atualmente não são afetadas. Em caso de dúvidas, entre em contato com o AWS Support.

Posso controlar o tempo de substituição de uma tarefa?

Em serviços que utilizam a 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.

Como o Amazon ECS processa tarefas que fazem parte de um serviço?

O Amazon ECS substitui gradualmente as tarefas afetadas no serviço quando o período de retirada do Fargate se inicia. Quando o Amazon ECS interrompe uma tarefa, ele usa o percentual mínimo de integridade do serviço e executa uma nova tarefa para manter a contagem de tarefas desejada do serviço. Uma nova tarefa é iniciada antes de uma tarefa ser interrompida porque o percentual mínimo de integridade padrão é 100. As tarefas de serviço são substituídas rotineiramente da mesma forma ao escalar o serviço ou implantar alterações de configuração ou revisões de definição de tarefa. Para obter mais informações sobre a porcentagem mínima de integridade, consulte Configuração de implantação.

O Amazon ECS pode processar automaticamente as tarefas autônomas?

Não. A AWS não consegue criar uma tarefa substituta para tarefas autônomas iniciadas por RunTask, tarefas programadas (por exemplo, por meio do Agendador do EventBridge), AWS Batch ou AWS Step Functions. O Amazon ECS gerencia somente tarefas que fazem parte de um serviço.