Zobacz dokumentację EC2 na ten temat .
Biegać:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
Jeśli potrzebujesz programowego dostępu do identyfikatora instancji z poziomu skryptu,
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: $?\"`"
Przykład bardziej zaawansowanego zastosowania (pobierz identyfikator instancji oraz strefę dostępności i region itp.):
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:'`"
Możesz również użyć curl
zamiast wget
, w zależności od tego, co jest zainstalowane na twojej platformie.
169.254.169.254
w/etc/hosts
razie sprawia, że czujesz się bardziej bezpieczny, należy ... opieki.$
) znajdź jedną lub więcej cyfr, po których następuje jedna lub więcej małych liter. Zastępuj tylko cyframi. (Backslash + nawiasy powiedz sed pamiętać podciąg, który przypomniał, z\1
). Uważam, że to trochę łatwiejsze do odczytania - jedynymi backslashe są te wymagane przez sed:EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')"
.http://instance-data/
zamiast169.254.169.254
W AMI Amazon Linux możesz:
Lub w Ubuntu i niektórych innych wersjach linuksowych
ec2metadata --instance-id
(To polecenie może nie być domyślnie instalowane w Ubuntu, ale możesz je dodaćsudo apt-get install cloud-utils
)Jak sama nazwa wskazuje, możesz użyć polecenia, aby uzyskać także inne przydatne metadane.
źródło
-
poec2
. Jestec2metadata --instance-id
ec2-metadata
, na Ubuntu wydaje się, że takec2metadata
.W Ubuntu możesz:
A potem możesz:
Większość metadanych powiązanych z instancją można uzyskać w następujący sposób:
źródło
apt-get install
pobiera wersję 0.11-0ubuntu1, która nie zawiera tego narzędzia. Został on dodany do pakietu tuż potem .Użyj
/dynamic/instance-identity/document
adresu URL, jeśli chcesz zapytać o coś więcej niż tylko identyfikator instancji.wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document
To będzie Ci JSON dane, takie jak ten - z tylko pojedynczego żądania .
źródło
Dla
.NET
ludzi:źródło
w systemie AWS Linux:
ec2-metadata --instance-id | cut -d " " -f 2
Wynik:
i-33400429
Używanie w zmiennych:
źródło
Dla osób PowerShell:
źródło
$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
W przypadku Python:
który sprowadza się do jednowarstwowej:
Zamiast local_hostname możesz także użyć public_hostname lub:
źródło
new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
Dla wszystkich maszyn ec2 identyfikator instancji można znaleźć w pliku:
Identyfikator instancji można również uzyskać, uruchamiając następującą komendę:
źródło
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
zawiera identyfikator wystąpienia, ale ma też wiele innych śmieci.Zobacz ten post - zauważ, że adres IP w podanym adresie URL jest stały (co początkowo mnie pomyliło), ale zwrócone dane są specyficzne dla twojej instancji.
źródło
Dla Ruby:
źródło
Bardziej współczesne rozwiązanie.
W systemie Amazon Linux polecenie ec2-metadata jest już zainstalowane.
Z terminala
Daje ci dostępne opcje
wróci
źródło
ec2-metadata
zmotd
dokumentami tutaj: coderwall.com/p/hr_9pw/motds-on-amazon-amisPo prostu wpisz:
źródło
Możesz spróbować:
źródło
Klasa c # .net, którą napisałem dla metadanych EC2 z interfejsu API http. W razie potrzeby zbuduję go z funkcjonalnością. Możesz z nim biegać, jeśli ci się podoba.
źródło
Najnowszy Java SDK ma
EC2MetadataUtils
:W Javie:
W Scali:
źródło
Dla C ++ (przy użyciu cURL):
źródło
Po prostu sprawdź
var/lib/cloud/instance
dowiązanie symboliczne, powinno wskazywać,/var/lib/cloud/instances/{instance-id}
gdzie{instance_id}
jest twój identyfikator instancji.źródło
Jeśli chcesz uzyskać listę identyfikatorów wszystkich instancji w pythonie, oto kod:
źródło
FWIW Napisałem system plików FUSE, aby zapewnić dostęp do usługi metadanych EC2: https://bitbucket.org/dgc/ec2mdfs . Uruchomię to na wszystkich niestandardowych AMI; pozwala mi używać tego idiomu: cat / ec2 / meta-data / ami-id
źródło
W Go możesz użyć pakietu goamz .
Oto źródło GetMetaData.
źródło
W pytaniu, w którym wspomniałeś użytkownika jako root, należy wspomnieć, że identyfikator instancji nie jest zależny od użytkownika.
Dla programistów Node
źródło
Aby uzyskać metadane instancji, użyj
źródło
Możesz po prostu wysłać żądanie HTTP, aby uzyskać dowolne metadane, przekazując parametry metadanych.
lub
Nie będą naliczane opłaty za żądania HTTP, aby uzyskać metadane i dane użytkownika.
Jeszcze
Można użyć narzędzia do wysyłania zapytań o metadane instancji EC2, które jest prostym skryptem bash, który używa curl do zapytania o metadane instancji EC2 z działającej instancji EC2, jak wspomniano w dokumentacji.
Pobierz narzędzie:
teraz uruchom polecenie, aby uzyskać wymagane dane.
Odnosić się:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/items/1825?externalID=1825
Chętnie pomoże.. :)
źródło
Alternatywne podejście do PHP:
Zapewni to dużo danych o instancji, wszystkie ładnie zapakowane w tablicę, bez zewnętrznych zależności. Ponieważ jest to prośba, która nigdy mnie nie zawiodła ani nie opóźniła, powinno być bezpiecznie zrobić to w ten sposób, w przeciwnym razie wybrałbym curl ()
źródło
Dla PHP:
Edytuj według @John
źródło
Uruchomić to:
Będziesz mógł zobaczyć różne typy atrybutów, które zapewnia aws.
Użyj tego linku, aby wyświetlić więcej
źródło
Do wszystkich metadanych związanych z zasobem EC2 może uzyskać dostęp sama instancja EC2 za pomocą następującego polecenia:
CURL:
W twoim przypadku: „ żądanie metadanych ” powinno być identyfikatorem instancji , „ wersja interfejsu API ” jest zwykle najnowsza, której można użyć.
Uwaga dodatkowa: Można również uzyskać informacje związane z poniższymi atrybutami EC2 za pomocą powyższego polecenia.
ami-id, ami-launch-index, ami-manifest-path, block-device-mapping /, nazwa hosta, iam /, instance-action, instance-id, typ-instancji, local-nazwa hosta, local-ipv4, mac, metrics /, network /, placement /, profile, public-hostname, public-ipv4, public-keys /, booking-id, security-groups, services /,
Aby uzyskać więcej informacji, kliknij ten link: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
źródło
W przypadku instancji Windows:
lub
źródło
Do elastycznej łodygi AWS eb cli run
eb tags --list
źródło