Назад | Перейти на главную страницу

получить список инстансов на ec2 без защиты от прерывания?

Я хочу получить список экземпляров на ec2 без защиты от прерывания. Прежде чем я закодирую что-нибудь для этого, есть ли что-то, что скрыто в aws cli для этого?

Мне кажется, из документации и моего тестирования вы ищете:

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

Это возвращает

<instanceid> DISABLEAPITERMINATION True

Если защита от прерывания включена. В документации указано: «Если значение истинно, вы не можете завершить работу экземпляра через консоль Amazon EC2, интерфейс командной строки или 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>

Вот сценарий, который перечислит защиту от прерывания для всех экземпляров во всех регионах. Для этого необходимо установить 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

Если вы работаете только с одним регионом, а интерфейс командной строки уже настроен для этого региона, вы можете упростить его и немного ускорить:

#!/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

Пример вывода 2-го сценария, показывающий два экземпляра, один без защиты от прерывания, а другой с:

i-0123456789abcdef0 false
i-0123456789abcdef1 true