获取没有终止保护的 ec2 上的实例列表?

获取没有终止保护的 ec2 上的实例列表?

我想获取 ec2 上没有终止保护的实例列表。在我编写代码来执行此操作之前,aws cli 中是否隐藏了某些内容?

答案1

从文档和我的测试来看,您正在寻找:

#aws ec2 describe-instance-attribute --instance-id <instanceid> --attribute disableApiTermination

这将返回

<instanceid> DISABLEAPITERMINATION True

如果终止保护已开启。文档指出,“如果值为 true,则您无法通过 Amazon EC2 控制台、CLI 或 API 终止实例;否则,您可以。”

您可以使用modify-instance-attribute修改该参数。所以...

#aws ec2 modify-instance-attribute --no-disable-api-termination --instance-id <instanceid>

或者

#aws ec2 modify-instance-attribute --disable-api-termination --instance-id <instanceid>

答案2

以下脚本将列出所有区域的所有实例的终止保护。它需要安装 AWS CLI,并且$PATH

#!/bin/bash                                                                                                                                                                                                                                                                                                                                          

for region in $(aws ec2 describe-regions | grep RegionName | cut -d '"' -f 4 | sort); do
    echo $region
    for instance in $(aws ec2 describe-instances --region $region | grep InstanceId | cut -d '"' -f 4 | sort); do
        echo -n $instance
        aws ec2 describe-instance-attribute --region $region --instance-id $instance --attribute disableApiTermination | grep Value | cut -d : -f 2
    done
done

如果您仅在一个区域上工作,并且已为该区域配置了 CLI,则您可以简化它并加快速度:

#!/bin/bash                                                                                                                                                                                                                                                                                                                                          

for instance in $(aws ec2 describe-instances | grep InstanceId | cut -d '"' -f 4 | sort); do
    echo -n $instance
    aws ec2 describe-instance-attribute --instance-id $instance --attribute disableApiTermination | grep Value | cut -d : -f 2
done

第二个脚本的示例输出显示了两个实例,一个没有终止保护,一个有:

i-0123456789abcdef0 false
i-0123456789abcdef1 true

相关内容