Ir para o conteúdo

Como resolvo o erro "cannotpullcontainererror" das minhas tarefas do Amazon ECS no Fargate?

6 minuto de leitura
0

Quero resolver o erro "cannotpullcontainererror" para poder iniciar minhas tarefas do Amazon Elastic Container Service (Amazon ECS) no AWS Fargate.

Breve descrição

O erro "cannotpullcontainererror" pode impedir que suas tarefas do Amazon ECS no Fargate sejam iniciadas. Para essas tarefas, suas configurações de rede da Amazon Virtual Private Cloud (Amazon VPC) devem permitir que o ECS acesse o repositório onde a imagem está armazenada. Sem a rede correta, a imagem não pode ser extraída pelo Amazon ECS no Fargate e o contêiner não pode ser iniciado.

Resolução

Para resolver o erro "cannotpullcontainererror", conclua as seguintes etapas:

Confirme que sua VPC permite que sua infraestrutura do Amazon ECS alcance o repositório de imagem

As tabelas de rotas associadas às sub-redes nas quais sua tarefa é criada devem permitir que sua infraestrutura do Amazon ECS alcance o endpoint do repositório. O endpoint pode ser acessado por meio de um gateway da internet, gateway NAT ou endpoints da VPC.

Para configurações que não usam o AWS PrivateLink, conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Sub-redes.
  3. Selecione a sub-rede que sua tarefa do ECS Fargate está usando.
  4. Clique na guia Tabela de rotas.
  5. Na coluna Destino, confirme se a rota padrão (0.0.0.0/0) da tabela de rotas permite acesso público à internet. Esse acesso pode ser feito por meio de um gateway NAT ou de um gateway de internet.
    Importante: O gateway NAT ou gateway da internet deve ser o destino da rota padrão. Para ver exemplos de tabelas de rotas, consulte Exemplos de opções de roteamento. Se você não usa um gateway NAT ou gateway da internet, certifique-se de que sua configuração personalizada permite acesso público à internet.

Se você usa um gateway da internet (sub-redes públicas), confirme se a tarefa tem um IP público atribuído a ela. Ao criar a tarefa ou o serviço, defina Atribuição automática de IP público como Ativada na seção VPC e grupos de segurança.

Para configurações que usam o PrivateLink, confirme se os grupos de segurança dos seus endpoints da VPC permitem que a infraestrutura do Fargate os usem.

Observação: As tarefas do Amazon ECS hospedadas no Fargate que usam a versão 1.3.0 ou anterior exigem o endpoint da VPC com.amazonaws.region.ecr.dkr do Amazon Elastic Container Registry (Amazon ECR). Essas tarefas também exigem o endpoint de gateway do Amazon Simple Storage Service (Amazon S3). As tarefas do Amazon ECS hospedadas no Fargate que usam a versão 1.4.0 ou posterior exigem os endpoints da VPC com.amazonaws.region.ecr.dkr e com.amazonaws.region.ecr.api do Amazon ECR. Essas tarefas também exigem o endpoint do gateway do Amazon S3.

Para configurações que usam o PrivateLink, conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Endpoints.
  3. Selecione o endpoint na lista de endpoints e, em seguida, selecione a guia Sub-redes. Os endpoints da VPC com.amazonaws.region.ecr.dkr e com.amazonaws.region.ecr.api para Amazon ECR são exibidos na lista de sub-redes e associados às sub-redes do Fargate. O gateway do Amazon S3 também está na lista de sub-redes.
    Observação: Se uma sub-rede não estiver listada, selecione Gerenciar sub-redes. Em seguida, selecione a sub-rede com base em sua Zona de disponibilidade. Em seguida, selecione Modificar sub-redes.
  4. Clique na guia Política e, em seguida, confirme se os requisitos corretos da política foram atendidos.
  5. Confirme se o grupo de segurança vinculado aos endpoints da VPC com.amazonaws.region.ecr.api e com.amazonaws.region.ecr.dkr permite conexões de entrada na porta 443 a partir das tarefas do Amazon ECS para Fargate. Para confirmar essa configuração, selecione o endpoint na lista.
  6. Selecione a guia Grupos de segurança.
  7. Em ID do grupo, selecione o ID do grupo de segurança.
  8. Clique na guia Regras de entrada e confirme se é possível ver a regra que permite conexões à porta 443 de suas tarefas do ECS no Fargate.

Verifique o conjunto de opções de DHCP da VPC

Conclua as etapas a seguir:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Suas VPCs.
  3. Selecione a VPC que contém sua tarefa do Fargate.
  4. Na guia Detalhes, anote a configuração do conjunto de opções DHCP.
  5. No painel de navegação, selecione Conjuntos de opções de DHCP.
  6. Selecione o conjunto de opções de DHCP que você anotou.
  7. Selecione Ações e depois Visualizar detalhes.
  8. Confirme se os servidores de nomes de Domínio estão definidos como AmazonProvidedDNS. Se não estiver definido como AmazonProvidedDNS, configure conditional DNS forwarding (configure o encaminhamento condicional de DNS).

Verifique as permissões do perfil de execução da tarefa

Conclua as etapas a seguir:

  1. Abra o console do AWS Identity and Access Management (AWS IAM).
  2. No painel de navegação, selecione Perfis.
  3. Selecione o perfil de execução de tarefa que suas tarefas do Fargate estão usando.
  4. Confirme se o perfil de execução de tarefa tem as permissões para extrair uma imagem do Amazon ECR.

Verifique se a imagem existe

Conclua as etapas a seguir:

  1. Abra o console do Amazon ECR.
  2. Selecione o repositório do Amazon ECR do qual sua tarefa do Fargate extrai a imagem.
  3. Confirme se o URI e a tag no Amazon ECR são os mesmos especificados na definição da tarefa. Se a imagem estiver ausente, check if a lifecycle policy manages the images (verifique se uma política de ciclo de vida gerencia as imagens).

Observação: Se você não usa o Amazon ECR, certifique-se de ver image:tag no repositório de imagens especificado.

Verifique o ephemeralStorage alocado para a tarefa do Fargate

Por padrão, as tarefas do Fargate recebem 20 GiB de armazenamento temporário. Se o tamanho da sua imagem for muito grande, você verá um erro semelhante ao seguinte:

"CannotPullContainerError: ref pull has been retried 1 time(s): failed to extract layer no space left on device: unknown"

Observação: Como esse armazenamento é usado para arquivos temporários, logs e outros processos, é possível receber o erro mesmo que a imagem seja menor.

Para resolver o problema, edite a alocação na definição da tarefa. Para obter mais informações, consulte armazenamento temporário de tarefas do Fargate para o Amazon ECS

Observação: As tarefas do Fargate que usam a versão da plataforma 1.4.0 ou posterior recebem no mínimo 20 GiB de armazenamento temporário. A quantidade total de armazenamento temporário pode ser aumentada até um máximo de 200 GiB.

AWS OFICIALAtualizada há um ano