Ir para o conteúdo

Como faço para garantir que o Amazon ECS use o resumo de imagem de instância de contêiner mais recente durante as implantações?

4 minuto de leitura
0

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

AWS OFICIALAtualizada há 2 anos