Puoi aggiungere questo script ai tuoi dati utente cloud-init per scaricare i tag EC2 in un file locale:
#!/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
Hai bisogno degli strumenti AWS CLI installati sul tuo sistema: puoi installarli con una packages
sezione in un file di configurazione cloud prima dello script, utilizzare un'AMI che li include già o aggiungere un apt
oyum
comando all'inizio dello script.
Per accedere ai tag EC2 è necessaria una policy come questa nel ruolo IAM della tua istanza:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
I tag EC2 dell'istanza saranno disponibili /etc/ec2-tags
in questo formato:
FOO="Bar"
Name="EC2 tags with cloud-init"
È possibile includere il file così com'è in uno script di shell utilizzando . /etc/ec2-tags
, ad esempio:
#!/bin/sh
. /etc/ec2-tags
echo $Name
I tag vengono scaricati durante l'inizializzazione dell'istanza, quindi non rifletteranno le modifiche successive.
Lo script e la policy IAM si basano sulla risposta di itaifrenkel.