如何找到非共享aws-ami



我想删除我自己的所有AMI,它们是非共享的
例如:

$aws ec2 describe-images --executable-users 804427628951


这将列出具有明确启动权限的用户804427628951的所有图像。但我不知道如何列出所有非共享AMI。你能帮忙吗?
谢谢

您可以使用以下命令列出所有自己的亚马逊机器图像(AMI):

aws ec2 describe-images --filters Name=image-type,Values=machine Name=owner-id,Values=YOUR_ACCOUNT_ID

在输出中,私人图像将显示为"Public": false

您也可以只显示私人图像:

aws ec2 describe-images --filters Name=image-type,Values=machine Name=is-public,Values=false Name=owner-id,Values=YOUR_ACCOUNT_ID

您可以列出帐户中的AMI,以及如何使用aws ec2 describe-imagesaws ec2 describe-image-attribute组合来共享它们。后者可以返回launchPermission元素,该元素是与AMI共享的帐户的列表。将两者结合使用可以迭代所有图像,并计算它们共享的次数,如下所示:

for ami in $(aws ec2 describe-images --owners self | jq -r '.Images[].ImageId')
  do aws ec2 describe-image-attribute --image-id $ami --attribute 'launchPermission' | 
    jq '.ImageId + " - " + ([.LaunchPermissions[]]|length|tostring)'
done

在你的情况下,你只对未共享的图像感兴趣,所以你可能想这样做:

for ami in $(aws ec2 describe-images --owners self | jq -r '.Images[].ImageId')
  do
    ct=$(aws ec2 describe-image-attribute --image-id $ami --attribute 'launchPermission' | 
      jq '[.LaunchPermissions[]]|length')
    if [ 0 -eq $ct ]; then echo $ami; fi
done

最新更新