Lihat dokumentasi EC2 tentang masalah ini .
Lari:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
Jika Anda memerlukan akses terprogram ke instance ID dari dalam skrip,
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: $?\"`"
Contoh penggunaan yang lebih lanjut (ambil ID instan serta zona ketersediaan dan wilayah, dll.):
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:'`"
Anda juga dapat menggunakan curl
sebagai gantinya wget
, tergantung pada apa yang diinstal pada platform Anda.
169.254.169.254
di/etc/hosts
jika itu membuat Anda merasa lebih aman, sebaiknya Anda ... peduli.$
), cari satu atau lebih digit yang diikuti oleh satu atau lebih huruf kecil. Pengganti dengan digit saja. (Backslash + kurung tell sed mengingat substring, yang teringat dengan\1
.) Saya menemukan ini sedikit lebih mudah untuk dibaca - satu-satunya backslashes adalah yang dibutuhkan oleh sed:EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')"
.http://instance-data/
alih-alih169.254.169.254
Di Amazon Linux, AMI dapat Anda lakukan:
Atau, di Ubuntu dan beberapa rasa linux lainnya,
ec2metadata --instance-id
(Perintah ini mungkin tidak diinstal secara default di ubuntu, tetapi Anda dapat menambahkannya dengansudo apt-get install cloud-utils
)Seperti namanya, Anda dapat menggunakan perintah untuk mendapatkan metadata berguna lainnya juga.
sumber
-
setelahec2
. Itu adalahec2metadata --instance-id
ec2-metadata
, sepertinya di Ubuntuec2metadata
.Di Ubuntu Anda dapat:
Dan kemudian Anda bisa:
Anda bisa mendapatkan sebagian besar metadata yang terkait dengan instance dengan cara ini:
sumber
apt-get install
mengambil versi 0.11-0ubuntu1 yang tidak mengandung utilitas ini. Itu ditambahkan ke paket setelah itu .Gunakan
/dynamic/instance-identity/document
URL jika Anda juga perlu meminta lebih dari sekadar ID instan Anda.wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document
Ini akan memberi Anda data JSON seperti ini - hanya dengan satu permintaan .
sumber
Untuk
.NET
Orang:sumber
di AWS Linux:
ec2-metadata --instance-id | cut -d " " -f 2
Keluaran:
i-33400429
Menggunakan dalam variabel:
sumber
Untuk orang-orang PowerShell:
sumber
$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
Untuk Python:
yang bermuara pada satu-liner:
Alih-alih local_hostname, Anda juga dapat menggunakan public_hostname, atau:
sumber
new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
Untuk semua mesin EC2, id-instance dapat ditemukan dalam file:
Anda juga bisa mendapatkan id instan dengan menjalankan perintah berikut:
sumber
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
berisi id instan, tetapi juga memiliki banyak sampah lainnya.Lihat posting ini - perhatikan bahwa alamat IP dalam URL yang diberikan adalah konstan (yang membuat saya bingung pada awalnya), tetapi data yang dikembalikan khusus untuk instance Anda.
sumber
Untuk Ruby:
sumber
Solusi yang lebih kontemporer.
Dari Amazon Linux perintah ec2-metadata sudah diinstal.
Dari terminal
Akan memberi Anda opsi yang tersedia
akan kembali
sumber
ec2-metadata
dengan Andamotd
, dokumen di sini: coderwall.com/p/hr_9pw/motds-on-amazon-amisKetik saja:
sumber
Anda dapat mencoba ini:
sumber
Kelas c # .net yang saya tulis untuk metadata EC2 dari http api. Saya akan membangunnya dengan fungsionalitas sesuai kebutuhan. Anda dapat menjalankannya jika Anda suka.
sumber
Java SDK terbaru memiliki
EC2MetadataUtils
:Di Jawa:
Dalam Scala:
sumber
Untuk C ++ (menggunakan cURL):
sumber
Cukup periksa
var/lib/cloud/instance
symlink, itu harus menunjuk ke/var/lib/cloud/instances/{instance-id}
mana{instance_id}
instance-id Anda.sumber
Jika Anda ingin mendapatkan semua daftar id instance dengan python di sini adalah kode:
sumber
FWIW Saya menulis sistem file FUSE untuk menyediakan akses ke layanan metadata EC2: https://bitbucket.org/dgc/ec2mdfs . Saya menjalankan ini pada semua AMI khusus; itu memungkinkan saya untuk menggunakan idiom ini: cat / ec2 / meta-data / ami-id
sumber
Di Go, Anda dapat menggunakan paket goamz .
Inilah sumber GetMetaData.
sumber
Dalam pertanyaan yang Anda sebutkan pengguna sebagai root, satu hal yang harus saya sebutkan adalah bahwa instance ID tidak tergantung pada pengguna.
Untuk pengembang Node ,
sumber
Untuk mendapatkan instance metadata gunakan
sumber
Anda bisa membuat permintaan HTTP untuk MENDAPATKAN Metadata apa pun dengan meneruskan parameter metadata Anda.
atau
Anda tidak akan dikenai biaya untuk permintaan HTTP untuk mendapatkan Metadata dan Userdata.
Lain
Anda bisa menggunakan EC2 Instance Metadata Query Tool yang merupakan skrip bash sederhana yang menggunakan curl untuk meminta contoh EC2 Metadata dari dalam instance EC2 yang berjalan seperti yang disebutkan dalam dokumentasi.
Unduh alat:
sekarang jalankan perintah untuk mendapatkan data yang diperlukan.
Lihat:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/items/1825?externalID=1825
Senang Membantu .. :)
sumber
Pendekatan alternatif untuk PHP:
Itu akan memberikan banyak data tentang instance, semua dikemas dengan baik dalam array, tidak ada dependensi eksternal. Karena ini adalah permintaan yang tidak pernah gagal atau tertunda untuk saya, maka aman untuk melakukannya dengan cara itu, jika tidak, saya akan mencari ikal ()
sumber
Untuk PHP:
Edit per @John
sumber
Jalankan ini:
Anda akan dapat melihat berbagai jenis atribut yang disediakan oleh aws.
Gunakan tautan ini untuk melihat lebih banyak
sumber
Semua meta-data yang terkait dengan sumber daya EC2 dapat diakses oleh instance EC2 itu sendiri dengan bantuan perintah berikut sedang dijalankan:
CURL:
Untuk kasus Anda: " metadata-diminta " harus berupa instance-id , " api-versi " biasanya terbaru yang dapat digunakan.
Catatan Tambahan: Anda juga bisa mendapatkan informasi terkait atribut EC2 di bawah ini menggunakan perintah di atas.
ami-id, ami-launch-index, ami-manifest-path, block-device-mapping /, hostname, iam /, instance-action, instance-id, instance-type, nama host lokal, local-ipv4, mac, metrik /, jaringan /, penempatan /, profil, public-hostname, public-ipv4, public-key /, reservasi-id, grup keamanan, layanan /,
Untuk detail lebih lanjut, ikuti tautan ini: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
sumber
Untuk contoh Windows:
atau
sumber
Untuk batang pohon elastis AWS eb cli run
eb tags --list
sumber