Sie können dieses Skript zu Ihren Cloud-Init- Benutzerdaten hinzufügen , um EC2-Tags in eine lokale Datei herunterzuladen:
#!/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
Sie benötigen die auf Ihrem System installierten AWS CLI-Tools: Sie können sie entweder mit einem packages
Abschnitt in einer Cloud-Konfigurationsdatei vor dem Skript installieren , eine AMI verwenden, die sie bereits enthält, oder ein apt
oder hinzufügenyum
-Befehl am Anfang des Skripts .
Um auf EC2-Tags zugreifen zu können, benötigen Sie eine Richtlinie wie diese in der IAM-Rolle Ihrer Instanz:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1409309287000",
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
}
]
}
Die EC2-Tags der Instanz sind /etc/ec2-tags
in folgendem Format verfügbar :
FOO="Bar"
Name="EC2 tags with cloud-init"
Sie können die Datei unverändert in ein Shell-Skript aufnehmen, indem Sie . /etc/ec2-tags
beispielsweise Folgendes verwenden :
#!/bin/sh
. /etc/ec2-tags
echo $Name
Die Tags werden während der Instanzinitialisierung heruntergeladen, sodass sie keine nachfolgenden Änderungen widerspiegeln.
Das Skript und die IAM-Richtlinie basieren auf der Antwort von itaifrenkel.