Ich möchte einige Tags der EC2-Spot-Instanz zu füllen, aber wie es unmöglich ist, es direkt in Spot-Anfrage zu tun, mache ich es über Benutzerdaten Skript. Alles geht gut, wenn ich die Region statisch festlege, aber es ist kein universeller Ansatz. Wenn ich versuche, die aktuelle Region aus den Benutzerdaten der Instanz zu ermitteln, ist die Variable immer leer. Ich mache es auf folgende Weise:EC2-Instance-Bereich ist nicht gefüllt in Benutzer-Datenskript
#!/bin/bash
region=$(ec2-metadata -z | awk '{print $2}' | sed 's/[a-z]$//')
aws ec2 create-tags \
--region $region \
--resources `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` \
--tags Key=sometag,Value=somevalue Key=sometag,Value=somevalue
Ich versuchte, eine Verzögerung, bevor Region gemacht bevöl
/bin/sleep 30
aber hatte kein Ergebnis.
Wenn ich dieses Skript jedoch nach dem Start manuell ausführen, werden die Tags hinzugefügt. Was ist los?
Warum alles in allem aws-cli nicht Standardbereich aus dem Profil bekommen? Ich habe aws configure
ordnungsgemäß innerhalb der Instanz konfiguriert, aber ohne --region
Klausel es Fehler, dass Region nicht angegeben wird.
Es ist immer gut, Pfade in Shell-Skripts vollständig zu qualifizieren. Wenn Sie es manuell ausführen, ist die Umgebung wahrscheinlich ziemlich unterschiedlich, einschließlich '$ PATH' ... also wollen Sie' region = $ (/ usr/bin/ec2-metadata ... '(oder wo auch immer es sich auf Ihrem System befindet) –