Możesz dodać ten skrypt do danych użytkownika Cloud-init, aby pobrać tagi EC2 do pliku lokalnego:
#!/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
Potrzebujesz narzędzi AWS CLI zainstalowanych w systemie: możesz zainstalować je z packages
sekcją w pliku cloud-config przed skryptem, użyć AMI, który już je zawiera, lub dodać polecenie apt
lub yum
na początku skryptu.
Aby uzyskać dostęp do tagów EC2, potrzebujesz zasady takiej jak ta w roli IAM Twojej instancji:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
Tagi EC2 instancji będą dostępne /etc/ec2-tags
w następującym formacie:
FOO="Bar"
Name="EC2 tags with cloud-init"
Możesz dołączyć plik w takiej postaci, w jakiej jest, do skryptu powłoki, używając . /etc/ec2-tags
na przykład:
#!/bin/sh
. /etc/ec2-tags
echo $Name
Tagi są pobierane podczas inicjowania instancji, więc nie będą odzwierciedlać późniejszych zmian.
Skrypt i zasady IAM są oparte na odpowiedzi itaifrenkel.