Você pode adicionar este script aos seus dados de usuário de inicialização em nuvem para baixar tags EC2 para um arquivo local:
#!/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
Você precisa das ferramentas AWS CLI instaladas em seu sistema: você pode instalá-las com uma packages
seção em um arquivo de configuração em nuvem antes do script, usar uma AMI que já as inclui ou adicionar um comando apt
ou yum
no início do script.
Para acessar tags EC2, você precisa de uma política como esta na função IAM da sua instância:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
As tags EC2 da instância estarão disponíveis /etc/ec2-tags
neste formato:
FOO="Bar"
Name="EC2 tags with cloud-init"
Você pode incluir o arquivo como está em um script de shell usando . /etc/ec2-tags
, por exemplo:
#!/bin/sh
. /etc/ec2-tags
echo $Name
As tags são baixadas durante a inicialização da instância, portanto, não refletirão as alterações subsequentes.
O script e a política do IAM são baseados na resposta de itaifrenkel.