如何通过云形成删除包含映像的 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.