Eu atualizei meu serviço Amazon Elastic Container Service (Amazon ECS) para executar tarefas com a imagem mais recente, mas algumas tarefas não usam a nova imagem. Ou, minhas tarefas do Amazon ECS falham e aparece a mensagem de erro CannotPullContainerError.
Breve descrição
Ao atualizar uma imagem no Amazon ECS, é possível receber a seguinte mensagem de erro:
“CannotPullContainerError: manifesto de extração de imagens foi repetido 1 vez(es): falha ao resolver ref account-id.dkr. ecr.us-east-1.amazonaws.com /test:latest @sha256:1ed47f24455xxxxxxxxx677: account-id.dkr. ecr.us-east-1.amazonaws.com /test:latest @sha256:1ed47f24455xxxxxxxxx677: não encontrado”
Ao atualizar uma imagem, você também deve atualizar o serviço. Por padrão, o Amazon ECS resolve as tags de imagens de contêineres especificadas na definição da tarefa para resumos de imagens de contêineres.
Para um serviço que executa e mantém uma única tarefa, o Amazon ECS usa a tarefa para estabelecer resumos de imagens para os contêineres de tarefas. Para um serviço que executa e mantém várias tarefas, o Amazon ECS usa a primeira tarefa que o programador de serviços iniciou durante a implantação. Para atualizar o resumo da imagem ao atualizar a tag de imagem na definição da tarefa, atualize o serviço e use a configuração Forçar nova implantação.
Para obter mais informações sobre o comportamento da imagem, consulte Resolução da imagem do contêiner.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Certifique-se de que o serviço use a imagem mais recente
Para garantir que o serviço use a imagem mais recente, atualize o serviço Amazon ECS e use a opção Forçar nova implantação. Ou execute o seguinte comando de serviço de atualização da AWS CLI:
aws ecs update-service --cluster clustername --service servicename --force-new-deployment
Observação: substitua o clustername pelo seu nome de cluster e servicename pelo seu nome de serviço.
Para usar um resumo de imagem específico, atualize a definição da tarefa e modifique a seção URI da imagem:
imageUri@imagedigest
"image": "accountid.dkr.ecr.region-name.amazonaws.com/image:latest@sha256:da04638bxxxxxxxxxx,"
Resolva o erro “O resumo da imagem não existe”
Se você receber uma mensagem de erro O resumo da imagem não existe, verifique se você excluiu a imagem.
Para verificar se o resumo da imagem existe em um repositório do Amazon Elastic Container Registry (Amazon ECR), execute o comando describe-images:
aws ecr describe-images --repository-name repositoryname --region regionname --query 'sort_by(imageDetails,& imagePushedAt)[*]'
Observação: Substitua repositoryname pelo nome do repositório e regionname pela sua região da AWS.
A saída do comando mostra todas as imagens no repositório. Se o resumo da imagem não existir, verifique o histórico de eventos do AWS CloudTrail** para a chamada de API **BatchDeleteImage para determinar por que a imagem foi excluída. Para verificar se uma política de ciclo de vida do Amazon ECR pode excluir uma imagem usada por uma tarefa em execução, consulte o CloudTrail para ver a chamada de API PolicyExecutionEvent.
Para garantir que uma tag de imagem de contêiner não mude, é uma prática recomendada ativar o atributo de imutabilidade da tag.
Observação: A tag de imagem do contêiner não é resolvida em serviços que usam o CODE\ _DEPLOY ou o controlador de implantação EXTERNO.
Para atualizar o resumo da imagem, conclua as etapas na seção Certifique-se de que o serviço use a imagem mais recente.
Desativar a consistência da versão
Talvez seja necessário usar uma tag de imagem de contêiner alterável, como MAIS RECENTE, em vez de uma imagem consistente. Para definir a configuração, atualize sua definição de contêiner para definir versionConsistency como desativado. Por padrão, versionConsistency está definido como ativado. Quando você altera o valor para desativado, o Amazon ECS não resolve mais a tag da imagem do contêiner em um resumo. Em vez disso, o Amazon ECS usa o URI da imagem original na definição do contêiner para implantação.
Informações relacionadas
Anunciando a consistência da versão do software para os serviços do Amazon ECS