Siehe die EC2-Dokumentation zu diesem Thema .
Lauf:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
Wenn Sie innerhalb eines Skripts programmgesteuerten Zugriff auf die Instanz-ID benötigen,
die() { status=$1; shift; echo "FATAL: $*"; exit $status; }
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
Ein Beispiel für eine erweiterte Verwendung (Abrufen der Instanz-ID sowie der Verfügbarkeitszone und -region usw.):
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
Sie können auch curl
anstelle von verwenden wget
, je nachdem, was auf Ihrer Plattform installiert ist.
169.254.169.254
in zu erstellen,/etc/hosts
wenn Sie sich dadurch sicherer fühlen, falls Sie sich darum kümmern sollten.$
Folgendes gefunden: Suchen Sie am Ende der Zeile ( ) eine oder mehrere Ziffern, gefolgt von einem oder mehreren Kleinbuchstaben. Ersetzen Sie nur durch die Ziffern. (Backslash + Klammern weisen sed an, sich an einen Teilstring zu erinnern, an den erinnert wird\1
.) Ich fand dies etwas einfacher zu lesen - die einzigen Backslashes sind die von sed geforderten :EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')"
.http://instance-data/
anstelle von169.254.169.254
Auf Amazon Linux AMIs können Sie Folgendes tun:
Oder unter Ubuntu und einigen anderen Linux-Varianten
ec2metadata --instance-id
(Dieser Befehl ist unter Ubuntu möglicherweise nicht standardmäßig installiert, aber Sie können ihn mit hinzufügensudo apt-get install cloud-utils
).Wie der Name schon sagt, können Sie mit dem Befehl auch andere nützliche Metadaten abrufen.
quelle
-
danachec2
. Es istec2metadata --instance-id
ec2-metadata
scheint es , unter Ubuntu scheint es zu seinec2metadata
.Unter Ubuntu können Sie:
Und dann können Sie:
Sie können die meisten mit der Instanz verknüpften Metadaten folgendermaßen abrufen:
quelle
apt-get install
ruft lucid die Version 0.11-0ubuntu1 ab, die dieses Dienstprogramm nicht enthält. Es wurde dem Paket kurz danach hinzugefügt .Verwenden Sie die
/dynamic/instance-identity/document
URL, wenn Sie auch mehr als nur Ihre Instanz-ID abfragen müssen.wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document
Auf diese Weise erhalten Sie JSON- Daten wie diese - mit nur einer einzigen Anfrage .
quelle
Für
.NET
Menschen:quelle
unter AWS Linux:
ec2-metadata --instance-id | cut -d " " -f 2
Ausgabe:
i-33400429
Verwenden in Variablen:
quelle
Für Powershell-Leute:
quelle
$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
Für Python:
was auf den Einzeiler hinausläuft:
Anstelle von local_hostname können Sie auch public_hostname verwenden oder:
quelle
new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
Für alle ec2-Maschinen befindet sich die Instanz-ID in der Datei:
Sie können die Instanz-ID auch abrufen, indem Sie den folgenden Befehl ausführen:
quelle
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
enthält die Instanz-ID, hat aber auch eine Menge anderen Müll.Siehe diesen Beitrag - beachten Sie, dass die IP-Adresse in der angegebenen URL konstant ist (was mich zunächst verwirrte), die zurückgegebenen Daten jedoch spezifisch für Ihre Instanz sind.
quelle
Für Ruby:
quelle
Eine zeitgemäßere Lösung.
Unter Amazon Linux ist der Befehl ec2-metadata bereits installiert.
Vom Terminal
Gibt Ihnen die verfügbaren Optionen
wird zurückkehren
quelle
ec2-metadata
mit Ihrenmotd
Dokumenten hier: coderwall.com/p/hr_9pw/motds-on-amazon-amisTippe einfach:
quelle
Sie können dies versuchen:
quelle
Eine c # .net-Klasse, die ich für EC2-Metadaten aus der http-API geschrieben habe. Ich werde es mit Funktionalität nach Bedarf aufbauen. Sie können damit laufen, wenn Sie es mögen.
quelle
Das neueste Java SDK hat
EC2MetadataUtils
:In Java:
In Scala:
quelle
Für C ++ (mit cURL):
quelle
Überprüfen Sie einfach den
var/lib/cloud/instance
Symlink, er sollte zeigen,/var/lib/cloud/instances/{instance-id}
wo{instance_id}
sich Ihre Instanz-ID befindet.quelle
Wenn Sie die ID-Liste aller Instanzen in Python erhalten möchten, finden Sie hier den Code:
quelle
FWIW Ich habe ein FUSE-Dateisystem geschrieben, um den Zugriff auf den EC2-Metadatendienst zu ermöglichen: https://bitbucket.org/dgc/ec2mdfs . Ich führe dies auf allen benutzerdefinierten AMIs aus. es erlaubt mir, diese Redewendung zu verwenden: cat / ec2 / meta-data / ami-id
quelle
In Go können Sie das Goamz-Paket verwenden .
Hier ist die GetMetaData-Quelle.
quelle
In der Frage, die Sie den Benutzer als root erwähnt haben, sollte ich erwähnen, dass die Instanz-ID nicht vom Benutzer abhängig ist.
Für Node- Entwickler
quelle
Verwenden Sie zum Abrufen der Instanzmetadaten
quelle
Sie können einfach eine HTTP-Anforderung zum Abrufen von Metadaten stellen, indem Sie Ihre Metadatenparameter übergeben.
oder
HTTP-Anforderungen zum Abrufen von Metadaten und Benutzerdaten werden Ihnen nicht in Rechnung gestellt.
Sonst
Sie können das Abfrage-Tool für EC2-Instanz-Metadaten verwenden, ein einfaches Bash-Skript, das mithilfe von Curl die Metadaten der EC2-Instanz aus einer laufenden EC2-Instanz abfragt, wie in der Dokumentation beschrieben.
Laden Sie das Tool herunter:
Führen Sie nun den Befehl aus, um die erforderlichen Daten abzurufen.
Verweisen:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/items/1825?externalID=1825
Freue mich zu helfen.. :)
quelle
Alternativer Ansatz für PHP:
Dadurch werden viele Daten über die Instanz bereitgestellt, die alle gut in ein Array gepackt sind und keine externen Abhängigkeiten aufweisen. Da es sich um eine Anfrage handelt, die für mich nie fehlgeschlagen oder verzögert wurde, sollte es sicher sein, dies so zu tun, sonst würde ich mich für curl () entscheiden.
quelle
Für PHP:
Bearbeiten per @John
quelle
Führen Sie Folgendes aus:
Sie können verschiedene Arten von Attributen sehen, die von aws bereitgestellt werden.
Verwenden Sie diesen Link, um weitere Informationen anzuzeigen
quelle
Auf alle Metadaten, die sich auf die EC2-Ressource beziehen, kann die EC2-Instanz selbst mit Hilfe des folgenden ausgeführten Befehls zugreifen:
CURL:
Für Ihren Fall: " Metadaten angefordert " sollte Instanz-ID sein , " API-Version " ist normalerweise die neueste , die verwendet werden kann.
Zusätzlicher Hinweis: Mit dem obigen Befehl können Sie auch Informationen zu den folgenden EC2-Attributen abrufen.
Ami-ID, Ami-Start-Index, Ami-Manifest-Pfad, Block-Geräte-Mapping /, Hostname, iam /, Instanz-Aktion, Instanz-ID, Instanz-Typ, lokaler Hostname, lokaler IPv4, Mac, Metriken /, Netzwerk /, Platzierung /, Profil, öffentlicher Hostname, öffentliches IPv4, öffentliche Schlüssel /, Reservierungs-ID, Sicherheitsgruppen, Dienste /,
Weitere Informationen finden Sie unter folgendem Link: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
quelle
Für eine Windows-Instanz:
oder
quelle
Für AWS elastische Bohnenstange eb cli run
eb tags --list
quelle