Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Como resolvo erros "CannotPullContainerError" ao executar uma tarefa do EC2 no Amazon ECS?
Quando eu executo uma tarefa do Amazon Elastic Compute Cloud (Amazon EC2) no Amazon Elastic Container Service (Amazon ECS), recebo o erro "CannotPullContainerError".
Breve descrição
O erro CannotPullContainerError ocorre pelos seguintes motivos:
- Uma tarefa do tipo de execução do Amazon EC2 não consegue extrair a imagem porque você configurou a rede incorretamente.
- Seu perfil do AWS Identity and Access Management (AWS IAM) não tem as permissões para extrair a imagem.
- Você atingiu a cota de taxa do DockerHub.
- O nome ou a tag da sua imagem não existe.
- A definição da sua tarefa faz referência a uma imagem que está em uma conta diferente da AWS.
- Seu sistema de arquivos está cheio.
Resolução
Use o runbook AWSSupport-TroubleshootECSTaskFailedToStart para solucionar problemas
Use o runbook AWSSupport-TroubleshootECSTaskFailedToStart para solucionar problemas de tarefas do Amazon ECS que falham ao iniciar. Ao executar o runbook, você deve usar o ID de tarefa que apresentou falha mais recentemente. Se a tarefa com falha fizer parte do serviço do 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 automação. Por padrão, as tarefas do Amazon ECS ficam visíveis por 1 hora após entrarem no estado Interrompido.
Para iniciar o runbook, consulte AWSSupport-TroubleshootECSTaskFailedToStart. Com base na saída da automação, use uma das seguintes resoluções.
Importante: use o runbook AWSSupport-TroubleshootECSTaskFailedToStart na mesma região da AWS em que seus recursos de cluster do Amazon ECS estão localizados.
A configuração de rede da sua 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 conseguirá alcançar o endpoint do Amazon Elastic Container Registry (Amazon ECR). Sem uma conexão com o endpoint, a instância não consegue extrair a imagem. Para verificar se sua instância de contêiner do Amazon ECS tem acesso à internet, realize as seguintes ações:
- Confirme se suas instâncias têm acesso à Internet por meio de um gateway da internet ou de um gateway NAT. Para solucionar problemas de conectividade do gateway NAT, consulte Por que não consigo usar o NAT para conectar minha instância do EC2 em uma sub-rede privada à internet?
Observação: é possível usar o AWS PrivateLink em vez do gateway NAT. Para evitar erros, certifique-se de configurar corretamente o PrivateLink. - Verifique se você permitiu o acesso HTTPS de entrada pela porta 443 nos níveis da instância, do grupo de segurança e da lista de controle de acesso à rede (ACL da rede). Para solucionar problemas de conectividade do gateway da internet, consulte Por que minha instância do Amazon EC2 não pode acessar a Internet por meio de um gateway da internet?
- Se você usa um endpoint de nuvem privada virtual (VPC) para se conectar a um endpoint do Amazon ECR, verifique seus grupos de segurança de instâncias de contêiner do Amazon ECS. Permita que sua instância de contêiner do Amazon ECS envie tráfego para grupos de segurança do seu endpoint da VPC.
- Se você receber a mensagem de erro CannotPullContainerError: API error, consulte Como resolvo tarefas do Amazon ECS que não conseguem extrair imagens do Amazon ECR?
Seu perfil do IAM não tem permissões para extrair imagens
Confirme se o perfil do IAM da instância associado ao perfil de instância tem permissão para acessar o repositório do Amazon ECR.
Observação: a política gerenciada pela AWS AmazonEC2ContainerRegistryReadOnly fornece as permissões mínimas necessárias para extrair imagens.
Você atingiu a cota de taxa de extração do DockerHub
Se você estiver tentando extrair uma imagem do DockerHub e atingir a cota da taxa de extração, receberá a seguinte mensagem de erro:
"CannotPullContainerError: inspect image has been retried 5 time(s): httpReaderSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Too Many Requests - Server message: toomanyrequests:"
Para resolver esse problema, consulte Como resolvo o erro "CannotPullContainerError: You have reached your pull rate limit" no Amazon ECS?
O nome ou a tag da sua imagem não existe
Se você definir uma imagem ou tag hospedada no Amazon ECR, mas a imagem ou tag não existir, você receberá a seguinte mensagem de erro:
"Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: not found**"
Para resolver esse problema, verifique se o campo imagem tem o valor correto na definição da sua tarefa. Confirme se o repositório correspondente e a tag estão presentes no registro do contêiner do qual você está extraindo.
Se sua tarefa extrair uma imagem de um registro diferente do Amazon ECR e sua tarefa não tiver informações, você receberá um erro diferente. O erro a seguir ocorre quando a imagem não existe, a tag não existe ou se você não forneceu as credenciais do registro:
"Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref docker.io/library/invalid-name:non-existenttag: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed"
Para resolver esse problema, verifique o campo de 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 Uso de imagens de contêiner que não são da AWS no Amazon ECS.
A imagem referenciada na definição da tarefa está em uma conta diferente
Se sua imagem estiver em uma conta diferente, é possível receber a seguinte mensagem de erro:
"Cannotpullcontainererror: pull access denied for 123456789***.dkr.ecr.us-east-1.amazonaws.com/image-name:tag, repository does not exist or may require 'docker login': denied: User: arn:aws:sts::012345678**:assumed-role/role-name/ec2 instance id is not authorized to perform: ecr:BatchGetImage on resource: arn:aws:ecr:us-east-1:123456789*:repository/image-name:tag because no resource-based policy allows the ecr:BatchGetImage action"
Para resolver esse problema, você deve permitir a ação ecr:batchGetImage nas políticas do repositório na conta em que a imagem está localizada.
Por exemplo, a instância associada ao seu cluster do Amazon ECS está na Conta A e a definição da tarefa faz referência a uma imagem na Conta B. As políticas do repositório na Conta B devem permitir ecr:batchGetImage no perfil do IAM da instância na Conta A. Você também deve ativar a permissão entre contas na política do repositório. Em seguida, confirme se a instância na Conta A pode extrair a imagem da Conta B. Para obter mais informações, consulte Como posso permitir que uma conta secundária envie ou extraia imagens nos meus repositórios de imagens do Amazon ECR?
Seu sistema de arquivos está cheio
Se seu sistema de arquivos estiver cheio, você receberá o seguinte erro:
"CannotPullContainerError: write /var/lib/docker/tmp/GetImageBlob2923440728: no space left on device"
Para resolver esse problema, realize as seguintes ações:
- Tópicos
- End User ComputingContainers
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 7 meses
- feita há um ano