Como posso resolver o erro “CannotPullContainerError” na minha tarefa de tipo de inicialização do Amazon ECS EC2?

5 minuto de leitura
0

Quando eu inicio uma tarefa do EC2 no Amazon Elastic Container Service (Amazon ECS), recebo o seguinte erro: “CannotPullContainerError”.

Breve descrição

O CannotPullContainerError ocorre devido a qualquer um dos seguintes problemas:

  • Uma tarefa do tipo de lançamento do Amazon Elastic Compute Cloud (Amazon EC2) não pode extrair a imagem devido a uma rede configurada incorretamente.
  • Seu perfil do AWS Identity and Access Management (IAM) não tem as permissões corretas para extrair ou enviar imagens.
  • Há um limite de taxa do DockerHub.
  • O nome ou a tag da imagem não existe.

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

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.

Sua configuração de rede de instância de contêiner do Amazon ECS está incorreta

Se sua instância de contêiner do Amazon ECS não tiver uma conexão com a Internet, ela não poderá acessar o endpoint do Amazon Elastic Container Registry (Amazon ECR). Sem uma conexão com o endpoint, a instância não pode extrair a imagem. Para verificar se sua instância de contêiner do ECS tem acesso à Internet, analise os seguintes pontos:

Seu perfil do IAM não tem as permissões corretas para extrair imagens

Confirme se o perfil do IAM da instância associada ao perfil de instância tem permissões para acessar o repositório Amazon ECR.

Observação: A política gerenciada pela AWS AmazonEC2ContainerRegistryReadOnly fornece as permissões mínimas necessárias para extrair imagens.

O limite da taxa de tração do DockerHub foi atingido

Se você estiver tentando extrair uma imagem do DockerHub e atingir o limite da taxa de extração, receberá a seguinte mensagem de erro:

“CannotPullContainerError: a inspeção da imagem foi repetida 5 vezes: httpReaderSeeker: falha na abertura: código de status inesperado https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Muitas solicitações - Mensagem do servidor: toomanyrequests:”

Para resolver esse problema, revise as etapas em Como resolver o erro “CannotPullContainerError: Você atingiu seu limite de taxa de extração” no Amazon ECS?

O nome ou tag da imagem não existe

Se uma imagem ou sua tag associada hospedada no Amazon ECR definida em sua definição de tarefa não existir, você receberá o seguinte erro:

“Cannotpullcontainererror: pull image manifesto foi repetido 1 vez (es): falha ao resolver o ref 123456789.dkr. ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: não encontrado**”

Para resolver esse problema, verifique o campo da imagem na definição da sua tarefa. Confirme se o repositório correspondente e a tag definida estão presentes no registro do contêiner do qual você está obtendo.

Se sua tarefa extrair uma imagem de um registro diferente do Amazon ECR e não tiver informações, você receberá um erro diferente. O erro a seguir ocorre se a imagem não existir, a tag não existir ou se as credenciais do registro não forem fornecidas:

“Cannotpullcontainererror: pull image manifesto foi repetido 1 vez (es): falha ao resolver ref docker.io/library/invalid-name:non-existenttag: acesso de extração negado, o repositório não existe ou pode exigir autorização: mensagem do servidor: insufficient_scope: falha na autorização”

Para resolver esse problema, verifique o campo da imagem na definição da sua tarefa. Confirme se a imagem existe no registro de contêiner correspondente. Se a imagem existir, certifique-se de fornecer as credenciais corretas. Para obter mais informações, consulte Autenticação de registro privado para tarefas.