Ребята, я пишу сценарий, который будет экспортировать теги для запущенного экземпляра как переменные среды. Проблема с группами автомасштабирования заключается в том, что эти теги недоступны для экземпляра.
Как узнать, к какой группе автомасштабирования принадлежит экземпляр, с помощью команд api / aws cli? Мне нужно использовать теги экземпляров в скриптах, однако они недоступны. Предложения?
Спасибо!
Как узнать, к какой группе автомасштабирования принадлежит экземпляр, с помощью команд api / aws cli?
Вы можете использовать autoscaling describe-auto-scaling-instances
команда вместе с опцией --instance-ids
, как это:
aws autoscaling describe-auto-scaling-instances --instance-ids="i-zzxxccvv"
Проблема с группами автомасштабирования заключается в том, что эти теги недоступны для экземпляра. [...] Мне нужно использовать теги экземпляров в скриптах, однако они недоступны. Предложения?
Я интерпретирую это так, как будто вы хотите получить теги группы автомасштабирования, к которой принадлежит экземпляр? Используя AutoScalingGroupName
возвращенный из команды, показанной выше, вы можете использовать следующую команду:
aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=name-of-the-auto-scaling-group-here
Самый простой способ найти группу автомасштабирования экземпляра - изучить теги. Любые экземпляры в группе автомасштабирования будут иметь тег с именем aws:autoscaling:groupName
который содержит имя группы. Вы можете получить этот тег, используя следующую команду:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" "Name=key,Values=aws:autoscaling:groupName"
Затем вы можете захватить теги, как описано Bazze.
Альтернативным решением этого является распространение тегов из группы автомасштабирования на экземпляр.
Если вы используете облачную информацию для создания ASG, установите "PropagateAtLaunch": "true"
для каждого тега, который вы хотите распространить (см. Документы AWS Cloud Formation).
Если вы создаете группу вручную, убедитесь, что вы отметили поле «Отметить новые экземпляры» для каждого тега.
Как только вы это сделаете, теги будут скопированы в экземпляр, и вы сможете просто проверить теги своего экземпляра с помощью команды описать теги:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}"
я нахожу jq
полезно для обработки вывода инструмента aws cli. Например, следующая команда создает key=value
список из JSON:
aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE}" | jq -r '.Tags[] | @text "\(.Key)=\(.Value)"'
Чтобы собрать все вместе:
INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
ASG_NAME=`aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID" --region us-east-2 | jq '.Tags[] | select(.["Key"] | contains("aws:autoscaling:groupName")) | .Value'`
ASG_NAME=`echo $ASG_NAME | tr -d '"'`
Сделайте echo $ASG_NAME
и вы должны это увидеть.