Programar tarefas do Amazon ECS - Serviço Amazon Elastic Container

Programar tarefas do Amazon ECS

O Amazon Elastic Container Service (Amazon ECS) é um sistema de estado compartilhado e de simultaneidade otimista que oferece recursos de programação flexíveis para as tarefas e os contêineres. Os programadores do Amazon ECS utilizam as mesmas informações de estado de cluster que as da API do Amazon ECS para tomar decisões apropriadas de posicionamento.

Cada tarefa que usa o tipo de inicialização do Fargate tem seu próprio limite de isolamento e não compartilha os recursos subjacentes com outras tarefas. Esses recursos incluem o kernel, os recursos de CPU, os recursos de memória subjacentes e a interface de rede elástica.

O Amazon ECS oferece um programador de serviços para tarefas e aplicações de longa duração. Ele também oferece a capacidade de executar tarefas manualmente para trabalhos em lote ou tarefas únicas. O Amazon ECS fornece um programador sempre que coloca tarefas no cluster. Você pode especificar as estratégias e restrições de posicionamento de tarefas para executar tarefas que melhor atendam às suas necessidades. Por exemplo, você pode especificar se as tarefas são executadas em várias zonas de disponibilidade ou em uma única zona de disponibilidade. E, opcionalmente, você pode integrar tarefas com seus próprios programadores personalizados ou de terceiros.

Programador de serviços

O programador de serviços é adequado para serviços e aplicações sem estado de longa duração. O programador de serviços garante que a estratégia de programação que você especifica seja seguida e reprograma as tarefas em caso de falha. Por exemplo, se a infraestrutura subjacente apresentar falha, o programador de serviços poderá reprogramar as tarefas.

Há duas estratégias de programador de serviços disponíveis:

  • REPLICA: a estratégia de programação de réplica coloca e mantém o número desejado de tarefas no seu cluster. Por padrão, o programador de serviço distribui tarefas por zonas de disponibilidade. Você pode usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefa. Para mais informações, consulte Réplica.

  • DAEMON: a estratégia de programação do daemon implanta exatamente uma tarefa em cada instância de contêiner ativa que atenda a todas as restrições de posicionamento de tarefas que você especifica no seu cluster. O programador de serviço avalia as restrições de posicionamento de tarefas para executar tarefas e interromperá as que não atenderem às restrições de posicionamento. Ao usar essa estratégia, não há necessidade de especificar um número desejado de tarefas, uma estratégia de posicionamento de tarefas ou usar políticas de Auto Scaling do serviço. Para obter mais informações, consulte Daemon.

    nota

    As tarefas do Fargate não são compatíveis com a estratégia de programação do DAEMON.

O programador de serviços, opcionalmente, também se certifica de que as tarefas estejam registradas em um balanceador de carga do Elastic Load Balancing. Você pode atualizar os serviços mantidos pelo programador de serviços. Isso pode incluir a implantação de uma nova definição de tarefa ou a alteração do número de tarefas desejadas que estão sendo executadas. Por padrão, o programador de serviços distribui tarefas em várias zonas de disponibilidade. Entretanto, você pode usar estratégias e limitações de posicionamento de tarefas para personalizar decisões de posicionamento de tarefas. Para mais informações, consulte Serviços do Amazon ECS.

Tarefas em execução manual

A ação RunTask é adequada para processos, como trabalhos em lote que realizam o trabalho e são interrompidos. Por exemplo, você pode ter uma chamada de processo RunTask quando o trabalho entra em uma fila. A tarefa extrai o trabalho da fila, realiza o trabalho e acaba saindo. Ao usar o RunTask, você pode permitir que a estratégia de posicionamento da tarefa padrão distribua tarefas aleatoriamente pelo cluster. Isso minimiza as probabilidades de uma única instância obter um número desproporcional de tarefas. Também é possível usar RunTask para personalizar a maneira como o programador coloca tarefas usando estratégias de posicionamento da tarefa e restrições. Para obter mais informações, consulte Executar uma tarefa autônomae RunTask na Referência de API do Amazon Elastic Container Service.

Executar tarefas em uma programação do tipo cron

Se você tem tarefas a serem executadas em intervalos definidos no cluster, pode usar o console do Amazon ECS para criar um evento do EventBridge. Você pode executar tarefas para uma operação de backup ou uma varredura de log. O evento do EventBridge que você criar pode executar uma ou mais tarefas em seu cluster em horários especificados. Seu evento programado pode ser definido para um intervalo específico (executar a cada N minutos, horas ou dias). Caso contrário, para agendamento mais complicado, você pode usar uma expressão do cron. Para mais informações, consulte Tarefas programadas.

Programadores personalizados

No Amazon ECS, você pode criar seus próprios programadores ou usar programadores de terceiros. O Blox é um projeto de código aberto que oferece um maior controle sobre a maneira como as aplicações em contêineres são executados no Amazon ECS. Você pode usar isso para criar programadores e integrar programadores de terceiros ao Amazon ECS. Ao mesmo tempo, também é possível usar o Amazon ECS para gerenciar e escalar seus clusters. Os programadores personalizados usam a operação de API StartTask para colocar tarefas em instâncias de contêiner específicas dentro do cluster.

nota

Programadores personalizados só são compatíveis com tarefas hospedadas em instâncias do EC2. Se você usar o Amazon ECS no Fargate, a API StartTask não funcionará.

Posicionamento de tarefas

Use as ações RunTask e CreateService para especificar restrições e estratégias de posicionamento de tarefas. Elas personalizam a forma como o Amazon ECS posiciona e executa as tarefas. Para mais informações, consulte Posicionamento de tarefas do Amazon ECS.