Como solucionar problemas relacionados a tarefas agendadas no Amazon ECS?

4 minuto de leitura
0

Agendei minha tarefa do Amazon Elastic Container Service (Amazon ECS) para ser executada periodicamente. No entanto, ela não é acionada. Não estou recebendo logs de execução ou o histórico das tarefas no cluster.

Resolução

Quando você usa uma tarefa agendada do Amazon ECS, o Amazon CloudWatch Events chama a API RunTask para o Amazon ECS executar as tarefas em seu nome.

Sua tarefa agendada do Amazon ECS pode não ser chamada pelos seguintes motivos:

  • A expressão cron ou o horário do Amazon EventBridge não tem a configuração correta.
  • A regra do EventBridge não invoca o destino.
  • A API RunTask falhou ao ser executada.
  • O contêiner é encerrado devido a problemas na aplicação ou a restrições de recursos.

Verifique se a expressão cron do EventBridge está configurada incorretamente

Para obter a expressão cron do EventBridge, execute o seguinte comando da AWS Command Line Interface (AWS CLI):

$ aws events describe-rule --name "example-rule" --region example-region

Na saída do comando, você pode visualizar a expressão cron do EventBridge configurada no parâmetro ScheduleExpression. Certifique-se de definir o agendamento da regra no fuso horário UTC+0.

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

Verifique se a regra não invoca o destino

Use as métricas do Amazon CloudWatch geradas pelo EventBridge para visualizar a performance da regra. Os pontos de dados da métrica Invocation indicam que o destino foi invocado pela regra. Se os pontos de dados da métrica FailedInvocations estiverem presentes, é porque há um problema ao invocar o destino. FailedInvocations representa uma falha permanente e pode ser resultante de permissões incorretas ou de erros na configuração do destino.

Para revisar as métricas do CloudWatch para a regra do EventBridge, faça o seguinte:

  1. Abra o console do CloudWatch.
  2. No painel de navegação, escolha Metrics (Métricas) e depois All metrics (Todas as métricas).
  3. Escolha Events (Eventos).
  4. Escolha By Rule Name (Por nome da regra).
  5. Selecione as métricas TriggerRules, Invocations e FailedInvocations (se disponíveis) para a regra do EventBridge configurada para executar a tarefa do ECS.
  6. Escolha a guia Graphed metrics (Métricas em gráfico).
  7. Para todas as métricas listadas, selecione SUM para Statistic (Estatística).

Se pontos de dados FailedInvocations estiverem presentes, pode haver um problema relacionado a permissões de destino inadequadas. Certifique-se de que o EventBridge tenha acesso para invocar sua tarefa do ECS. Verifique se a função do AWS Identity and Access Management (IAM) do EventBridge tem as permissões necessárias. Para obter mais informações, consulte Função do IAM do Amazon ECS CloudWatch Events.

Verifique se a execução da ação RunTask falhou

Para verificar se a execução da API RunTask falhou ao ser, procure RunTask no histórico de eventos do AWS CloudTrail dentro do intervalo de tempo em que se esperava que a tarefa do ECS agendada fosse invocada.

Para descobrir se a tarefa agendada não foi invocada porque a ação RunTask falhou, faça o seguinte:

  1. Abra o console do AWS CloudTrail.
  2. No painel de navegação, escolha Event history (Histórico de eventos).
  3. Na página Event history (Histórico de eventos), para Lookup attributes (Atributos de pesquisa), selecione Event name (Nome do evento).
  4. Em Enter an event name (Digite um nome de evento), insira RunTask.
  5. Escolha o intervalo de tempo no filtro de intervalos de tempo com base em quando a tarefa agendada do ECS deveria ser executada.
    Observação: os valores predefinidos para o intervalo de tempo são 30 minutos, 1 hora, 3 horas e 12 horas. Para especificar um intervalo de tempo personalizado, escolha Custom (Personalizado).
  6. Na lista de resultados, escolha o evento que você deseja visualizar.
  7. Role até Event record (Registro de evento) na página Details (Detalhes) para visualizar o registro de evento JSON.
  8. Procure elementos errorMessage ou responseElements.failures.reason no registro de evento JSON.
    Esses elementos no registro de evento JSON exibem o motivo de a tarefa agendada do ECS não ter sido invocada.

Para exemplos de motivos de falha da API RunTask e suas causas, consulte Motivos de falhas da API.

Verifique se o contêiner foi encerrado após a execução da tarefa

As tarefas do Amazon ECS podem ser interrompidas mesmo após sua execução bem-sucedida devido a problemas na aplicação ou restrições de recursos. Para obter mais informações, consulte Como faço para solucionar problemas com contêineres saindo de minhas tarefas do Amazon ECS?


Informações relacionadas

Como solucionar problemas de tarefas do Amazon ECS no Fargate que param inesperadamente?

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos