如何通过云形成删除包含映像的 AWS ECR 存储库



如何通过云形成删除包含映像的 AWS ECR 存储库? 删除错误时出现以下错误。

无法删除注册表中名称为"test"且 ID 为"**********"的存储库,因为它仍包含映像

离开我的方法,使用 Python 的 boto3 客户端来解决这个问题。(1( 清空存储库,然后 (2( 删除堆栈。

import boto3
ecr_client = boto3.client('ecr')
...
# Apply only to ecr cfn template
if '-ecr' in stack_name:
    print('Deleting existing images...')
    image_ids = ecr_client.list_images(repositoryName=ECR_REPO_NAME)['imageIds']
    ecr_client.batch_delete_image(
        repositoryName=ECR_REPO_NAME,
        imageIds=image_ids
    )
    print('ECR repository is now empty.')
# Now delete stack containing ECR repository
delete_stack(**cf_template)

我能够通过首先删除 ECR 中的所有图像,然后返回 CloudFormation 并再次删除来做到这一点。有关删除图像的说明,请参阅:https://docs.aws.amazon.com/AmazonECR/latest/userguide/delete_image.html。完成此操作后,我能够返回CloudFormation并毫无问题地删除。

似乎没有办法通过CloudFormation完成所有这些工作,但是您可以使用单个cli命令来完成,而不是诉诸python或多个图像删除命令。

aws ecr delete-repository 
  --repository-name <reponame> 
  --force
-

-force 标志也会导致图像被删除:

   --force | --no-force (boolean)
      If a repository contains images, forces the deletion.

最新更新