Puede agregar este script a su datos de usuario init-nube para descargar las etiquetas de EC2 en un archivo 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
Usted necesita las herramientas AWS CLI instalados en el sistema: puede instalarlos con una sección packages
en un archivo de nube-config antes el script, use un AMI que ya los incluya, o agregue un comando apt
o yum
al comienzo del script.
Con el fin de acceder a las variables de EC2 que necesita una política como ésta en función de IAM de la instancia:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
etiquetas EC2 de la instancia disponible en /etc/ec2-tags
en este formato:
FOO="Bar"
Name="EC2 tags with cloud-init"
Usted puede incluir el archivo como está en un script de shell usando . /etc/ec2-tags
, por ejemplo:
#!/bin/sh
. /etc/ec2-tags
echo $Name
Las etiquetas se descargan durante la inicialización de la instancia, por lo que no reflejarán los cambios posteriores.
La secuencia de comandos y la política de IAM se basan en la respuesta de itaifrenkel.
OK, he seguido ese enlace, y parece que es la documentación de la API. ¿No hay ninguna herramienta que pueda usar o necesito leer la documentación de la API y escribir mi propia herramienta? –
¿Está fácilmente disponible el comando ec2-describe-tags? Supuestamente está en el paquete ec2-api-tools, pero no obtuve nada más que el 404 cuando intenté instalarlo. –
dar un ejemplo, obtener el valor del rol de etiqueta: aws ec2 describe-tags --filters Name = resource-id, Values = 'ec2metadata --instance-id' --out = json | jq '.Tags [] | select (.Key == "role") | .Value ' – jolestar