我想删除我自己的非AMI所有AMI 例如:
$aws ec2 describe-images --executable-users 804427628951
这将列出具有显式启动权限的用户804427628951的所有图像。但我不知道如何列出所有非共享AMI。能否请你帮忙?
感谢。
答案 0 :(得分:0)
您可以使用以下命令列出所有自己的亚马逊机器映像(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
答案 1 :(得分:0)
您可以列出帐户中的AMI,以及如何使用aws ec2 describe-images
和aws 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