Como resolvo o erro “ResourceInitializationError: falha ao validar os argumentos do registrador” no Amazon ECS?

4 minuto de leitura
0

Quando executo uma tarefa no Amazon Elastic Container Service (Amazon ECS), recebo um erro “ResourceInitializationError: falha ao validar os argumentos do registrador”.

Breve descrição

Quando uma tarefa do Amazon ECS não consegue encontrar o grupo de logs do Amazon CloudWatch definido na tarefa definitionAmazon, o Amazon ECS retorna um erro ResourceInitialization. Se você receber a seguinte mensagem de erro:

“ResourceInitializationError: falha ao validar os argumentos do registrador: a criação do stream foi repetida 1 vez: falha ao criar o fluxo de log do CloudWatch: ResourceNotFoundException: O grupo de logs especificado não existe. : status de saída 1"

Para resolver o erro, crie um novo grupo de logs para a tarefa.

Use o runbook AWSSupport-TroubleshootECSTaskFailedToStart para solucionar os erros das tarefas do Amazon ECS que falham ao iniciar. Em seguida, consulte as etapas de solução de problemas relevantes para seu problema.

Resolução

Encontre uma tarefa que falhou ao iniciar

Importante:

  • Use o runbook AWSSupport-TroubleshootECSTaskFailedToStart na mesma região da AWS em que seus recursos de cluster do ECS estão localizados.
  • Ao usar o runbook, você deve usar a ID de tarefa que falhou mais recentemente. Se a tarefa com falha fizer parte do serviço Amazon ECS, use a tarefa que falhou mais recentemente no serviço. A tarefa com falha deve estar visível em ECS:DescribeTasks durante a execução da automação. Por padrão, as tarefas interrompidas do ECS ficam visíveis por 1 hora após entrarem no estado Interrompido. O uso da ID de tarefa que falhou mais recentemente impede que a limpeza do estado da tarefa interrompa a análise durante a automação.

Para obter instruções sobre como iniciar o runbook, consulte AWSSupport-TroubleshootECSTaskFailedToStart. Com base na saída da automação, use uma das seguintes etapas manuais de solução de problemas.

Solucionar o erro

Para resolver o erro ResourceInitialization, analise as soluções a seguir para criar um novo grupo de logs para a tarefa.

Se você não souber qual grupo de logs está definido na definição da tarefa e está retornando um erro, execute o seguinte comando:

aws ecs describe-task-definition --task-definition nginx-fargate:3 | jq -r .taskDefinition.containerDefinitions[].logConfiguration

A saída descreve o grupo de logs que você deve recriar no CloudWatch.

Crie um grupo de registros do CloudWatch no console

  1. Abra o console do CloudWatch.
  2. Na barra de navegação, escolha a Região em que o cluster do Amazon ECS está localizado.
  3. No painel de navegação, escolha Logs e, em seguida, escolha Grupos de logs.
  4. Na janela Grupos de logs, escolha Criar grupo de logs.

Crie um grupo de logs do CloudWatch usando o AWS CLI

Crie um grupo de logs do CloudWatch com o comando create-log-group da AWS Command Line Interface (AWS CLI). O comando de exemplo a seguir cria um grupo de logs chamado mylogs:

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

aws logs create-log-group --log-group-name mylogs

Use o atributo de configuração automática no console do Amazon ECS

A opção de configuração automática usa o nome da família de definição de tarefas com ecs como prefixo para criar um grupo de logs para você. O exemplo a seguir especifica uma configuração de log em sua definição de tarefa:

{  "containerDefinitions": [  
    {  
      "logConfiguration": {  
        "logDriver": "awslogs",  
        "options": {  
          "awslogs-create-group": "true",  
          "awslogs-group": "awslogs-wordpress",  
          "awslogs-region": "us-west-2",  
          "awslogs-stream-prefix": "awslogs-example"  
        }  
      }  
    }  
  ]  
}

Você também pode criar um grupo de logs personalizado com as seguintes etapas:

  1. Especifique as opções de configuração do log.
  2. Adicione a chave awslogs-create-group com um valor verdadeiro. Isso cria o grupo de logs para você.

O exemplo a seguir especifica uma configuração de log em sua definição de tarefa com opções definidas:

{  "containerDefinitions": [  
    {  
      "logConfiguration": {  
        "logDriver": "awslogs",  
        "options": {  
          "awslogs-group": "example_container",  
          "awslogs-region": "eu-west-1",  
          "awslogs-create-group": "true",  
          "awslogs-stream-prefix": "example"  
        }  
      }  
    }  
  ]  
}

**Observação:**A política gerenciada de Gerenciamento de Identidade e Acesso da AWS (IAM) AmazonECSTaskExecutionRolePolicy não inclui permissões logs:CreateLogGroup. Para usar a opção awslogs-create-group, adicione logs:CreateLogGroup como uma política de IAM embutida.