Вы можете добавить этот скрипт в свой облачных инициализации пользовательские данные для загрузки EC2 тегов в локальный файл:
#!/bin/sh
INSTANCE_ID=`wget -qO- http://instance-data/latest/meta-data/instance-id`
REGION=`wget -qO- http://instance-data/latest/meta-data/placement/availability-zone | sed 's/.$//'`
aws ec2 describe-tags --region $REGION --filter "Name=resource-id,Values=$INSTANCE_ID" --output=text | sed -r 's/TAGS\t(.*)\t.*\t.*\t(.*)/\1="\2"/' > /etc/ec2-tags
вам нужны инструменты AWS CLI установлены на вашей системе: вы можете установить их с packages
раздела в файле облака конфигурации перед сценарий, используйте AMI, который уже включает их, или добавьте команду apt
или yum
в начале скрипта.
Чтобы получить доступ к EC2 теги, нужна политика, как этот в IAM роли вашего экземпляра:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
EC2 теги экземпляра, будут доступны в /etc/ec2-tags
в этом формате:
FOO="Bar"
Name="EC2 tags with cloud-init"
You может включать файл как есть в сценарии оболочки, используя . /etc/ec2-tags
, например:
#!/bin/sh
. /etc/ec2-tags
echo $Name
Теги загружаются во время инициализации экземпляра, поэтому они не будут отражать последующие изменения.
Сценарий и политика IAM основаны на ответе itaifrenkel.
ОК, я последовал за эту ссылку, и, похоже, это документация API. Нет ли инструмента, который я могу использовать, или мне нужно прочитать документацию по API и написать собственный инструмент? –
Легко ли доступна команда ec2-describe-tags? Предположительно, он находится в пакете ec2-api-tools, но я не получил ничего, кроме 404, когда пытался его установить. –
Приведите пример, получите значение значения тега: aws ec2 description-tags --filters Name = resource-id, Values = 'ec2metadata --instance-id' --out = json | jq '.Tags [] | select (.Key == "role") | .Value ' – jolestar