如何自动删除cloudformation堆栈中许多ECR存储库中的所有图像

问题描述

当尝试通过cloudformation删除包含Elastic Container存储库的堆栈时

如果ECRs本身包含图像,则会给用户一个错误提示

  • “提供的存储库中有图像”-因此删除不起作用

我希望在我重新发布堆栈时自动删除所有图像,使用 删除/更新/创建亚马逊cloudformation堆栈的shell脚本

欢迎使用Bash脚本解决方案以及ECS政策解决方案, 我知道有很多解决方案可以实现这一目标,我正在寻找最 最佳且点击强度较低...

找到了其他具有一些建议的SO问题 但并没有真正提供明确的解决方Question1 Question2

解决方法

共享此bash脚本以删除aws帐户中的所有ECR图像 使用AWS命令行界面

由类似的SO Answer

分叉

注意:小心使用它!

#!/bin/bash

# Delete all aws containerImages in all repositories / ! \
repositories=($(aws ecr describe-repositories --output text --query "repositories[*].repositoryName"))
if [[ -z "$repositories" ]]
then 
  echo "No repositories found";
  exit 1; 
fi
for repository in "${repositories[@]}";
do
  imageIds=($(aws ecr list-images --repository-name $repository --query 'imageIds[*].imageDigest' --output text))
  if [[ -z "$imageIds" ]]
  then 
    echo "No images found in ${repository}";
  else
    for imageId in "${imageIds[@]}";
    do
      aws ecr batch-delete-image --repository-name $repository --image-ids imageDigest=$imageId
    done;
  fi
done;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...