Gunakan Layanan Metadata Instance untuk mengakses metadata instans - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan Layanan Metadata Instance untuk mengakses metadata instans

Anda dapat mengakses metadata instans dari instans yang sedang berjalan menggunakan salah satu metode berikut:

  • Instance Metadata Service Version 2 (IMDSv2) — metode yang berorientasi pada sesi

    Sebagai contoh, lihat Contoh untuk IMDSv2.

  • Layanan Metadata Instance Versi 1 (IMDSv1) — metode permintaan/respons

    Sebagai contoh, lihat Contoh untuk IMDSv1.

Secara default, Anda dapat menggunakan salah satu IMDSv1 atauIMDSv2, atau keduanya.

Anda dapat mengonfigurasi Layanan Metadata Instance (IMDS) pada setiap instance sehingga kode lokal atau pengguna harus menggunakan. IMDSv2 Ketika Anda menentukan yang IMDSv2 harus digunakan, IMDSv1 tidak lagi berfungsi. Untuk informasi tentang cara mengonfigurasi instans yang akan digunakanIMDSv2, lihatKonfigurasikan opsi Layanan Metadata Instance.

GETHeader PUT atau unik untukIMDSv2. Jika header ini ada dalam permintaan, maka permintaan tersebut dimaksudkan untukIMDSv2. Jika tidak ada header yang hadir, diasumsikan permintaan dimaksudkan untukIMDSv1.

Untuk tinjauan ekstensifIMDSv2, lihat Menambahkan pertahanan secara mendalam terhadap firewall terbuka, proxy terbalik, dan SSRF kerentanan dengan penyempurnaan pada Layanan Metadata Instance. EC2

Bagaimana cara kerja Layanan Metadata Instans Versi 2

IMDSv2menggunakan permintaan berorientasi sesi. Dengan permintaan berorientasi sesi, Anda membuat token sesi yang menentukan durasi sesi, yang bisa minimal satu detik dan maksimal enam jam. Selama durasi yang ditentukan, Anda dapat menggunakan token sesi yang sama untuk permintaan selanjutnya. Setelah durasi yang ditentukan berakhir, Anda harus membuat token sesi baru yang akan digunakan untuk permintaan di masa mendatang.

catatan

Contoh di bagian ini menggunakan IPv4 alamat Layanan Metadata Instans (IMDS):. 169.254.169.254 Jika Anda mengambil metadata instance untuk EC2 instance di atas IPv6 alamat, pastikan Anda mengaktifkan dan menggunakan alamat sebagai gantinya:. IPv6 [fd00:ec2::254] IPv6Alamat IMDS kompatibel dengan IMDSv2 perintah. IPv6Alamat hanya dapat diakses pada instans yang dibangun di AWS Sistem Nitro dan dalam subnet yang IPv6 didukung (tumpukan ganda atau IPv6 hanya).

Contoh berikut menggunakan skrip shell dan IMDSv2 untuk mengambil item metadata instance tingkat atas. Setiap contoh:

  • Membuat token sesi yang berlangsung selama enam jam (21.600 detik) menggunakan permintaan PUT

  • Menyimpan header token sesi dalam variabel bernama TOKEN (instance Linux) atau token (instance Windows)

  • Meminta item metadata tingkat atas menggunakan token

Anda bisa menjalankan dua perintah terpisah, atau menggabungkannya.

Perintah terpisah

Pertama, hasilkan token menggunakan perintah berikut.

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`

Kemudian, gunakan token untuk menghasilkan item metadata tingkat atas dengan menggunakan perintah berikut.

[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/

Perintah gabungan

Anda dapat menyimpan token dan menggabungkan perintah. Contoh berikut menggabungkan dua perintah di atas dan menyimpan header token sesi dalam variabel bernamaTOKEN.

catatan

Jika ada kesalahan dalam membuat token, alih-alih token yang valid, pesan kesalahan akan disimpan dalam variabel, dan perintah tidak akan bekerja.

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/

Setelah Anda membuat token, Anda dapat menggunakannya kembali hingga kedaluwarsa. Dalam contoh perintah berikut, yang mendapatkan ID yang AMI digunakan untuk meluncurkan instance, token yang disimpan $TOKEN dalam contoh sebelumnya digunakan kembali.

[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/

Setelah Anda membuat token, Anda dapat menggunakannya kembali hingga kedaluwarsa. Dalam contoh perintah berikut, yang mendapatkan ID yang AMI digunakan untuk meluncurkan instance, token yang disimpan $token dalam contoh sebelumnya digunakan kembali.

PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id

Ketika Anda menggunakan IMDSv2 untuk meminta metadata instance, permintaan harus menyertakan yang berikut:

  1. Gunakan permintaan PUT untuk memulai sesi ke layanan metadata instans. Permintaan PUT mengembalikan sebuah token yang harus disertakan dalam permintaan GET selanjutnya ke layanan metadata instans. Token diperlukan untuk mengakses metadata menggunakan. IMDSv2

  2. Sertakan token dalam semua GET permintaan keIMDS. Ketika penggunaan token diatur kerequired, permintaan tanpa token yang valid atau dengan token kedaluwarsa menerima kode 401 - Unauthorized HTTP kesalahan.

    • Token adalah kunci untuk instans tertentu. Token tidak valid pada EC2 instance lain dan akan ditolak jika Anda mencoba menggunakannya di luar instance tempat token tersebut dihasilkan.

    • PUTPermintaan harus menyertakan header yang menentukan waktu untuk live (TTL) untuk token, dalam hitungan detik, hingga maksimum enam jam (21.600 detik). Token tersebut mewakili sesi logis. TTLIni menentukan lamanya waktu token valid dan, oleh karena itu, durasi sesi.

    • Setelah token kedaluwarsa, untuk terus mengakses metadata instans, Anda harus membuat sesi baru menggunakan PUT yang lain.

    • Anda dapat memilih untuk menggunakan kembali token atau membuat token baru dengan setiap permintaan. Untuk sejumlah kecil permintaan, mungkin lebih mudah untuk membuat dan segera menggunakan token setiap kali Anda perlu mengaksesIMDS. Namun, untuk efisiensi, Anda dapat menentukan durasi yang lebih lama untuk token dan menggunakannya kembali daripada harus menulis perimtaan PUT setiap kali Anda perlu meminta metadata instans. Tidak ada batasan praktis untuk jumlah token yang bersamaan, masing-masing mewakili sesinya sendiri. IMDSv2Namun, masih dibatasi oleh IMDS koneksi normal dan batas pelambatan. Untuk informasi selengkapnya, lihat Throttling kueri.

HTTPGETdan HEAD metode diizinkan dalam permintaan metadata IMDSv2 contoh. PUTpermintaan ditolak jika berisi header X-Forwarded-For.

Secara default, respons untuk permintaan PUT memiliki batas hop respons (waktu hidup) sebesar 1 di tingkat protokol IP. Jika Anda membutuhkan batas hop yang lebih besar, Anda dapat menyesuaikannya dengan menggunakan modify-instance-metadata-options AWS CLI perintah. Misalnya, Anda mungkin memerlukan batas hop yang lebih besar untuk kompatibilitas mundur dengan layanan container yang berjalan pada instans. Untuk informasi selengkapnya, lihat Mengonfigurasi opsi metadata instans untuk instans yang ada.

Transisi ke penggunaan Layanan Metadata Instans Versi 2

Saat bermigrasi keIMDSv2, kami sarankan Anda menggunakan alat dan jalur transisi berikut.

Alat untuk membantu transisi ke IMDSv2

Jika perangkat lunak Anda menggunakanIMDSv1, gunakan alat berikut untuk membantu mengkonfigurasi ulang perangkat lunak Anda untuk digunakanIMDSv2.

AWS perangkat lunak

Versi terbaru dari AWS CLI and AWS SDKsdukunganIMDSv2. Untuk menggunakannyaIMDSv2, pastikan EC2 instans Anda memiliki versi terbaru dari CLI danSDKs. Untuk informasi tentang memperbaruiCLI, lihat Menginstal, memperbarui, dan menghapus instalasi AWS CLIdi AWS Command Line Interface Panduan Pengguna.

Semua paket perangkat lunak Amazon Linux 2 dan Amazon Linux 2023 mendukungIMDSv2. Di Amazon Linux 2023, IMDSv1 dinonaktifkan secara default.

Untuk minimum AWS SDKversi yang mendukungIMDSv2, lihatGunakan yang didukung AWS SDK.

IMDSPenganalisis Paket

IMDSPacket Analyzer adalah alat open-source yang mengidentifikasi dan mencatat IMDSv1 panggilan dari fase boot instance Anda. Ini dapat membantu dalam mengidentifikasi perangkat lunak yang membuat IMDSv1 panggilan pada EC2 instance, memungkinkan Anda untuk menentukan dengan tepat apa yang perlu Anda perbarui agar instance Anda siap digunakan saja. IMDSv2 Anda dapat menjalankan IMDS Packet Analyzer dari baris perintah atau menginstalnya sebagai layanan. Untuk informasi lebih lanjut, lihat IMDSPacket Analyzer di. GitHub

CloudWatch

IMDSv2menggunakan sesi yang didukung token, sementara IMDSv1 tidak. MetadataNoToken CloudWatch Metrik melacak jumlah panggilan ke Layanan Metadata Instans (IMDS) yang digunakan. IMDSv1 Dengan melacak metrik ini ke nol, Anda dapat menentukan apakah dan kapan semua perangkat lunak Anda telah ditingkatkan untuk digunakanIMDSv2.

Setelah menonaktifkanIMDSv1, Anda dapat menggunakan MetadataNoTokenRejected CloudWatch metrik untuk melacak berapa kali IMDSv1 panggilan dicoba dan ditolak. Dengan melacak metrik ini, Anda dapat memastikan apakah perangkat lunak Anda perlu diperbarui untuk digunakanIMDSv2.

Untuk informasi selengkapnya, lihat Metrik instans.

Update untuk EC2 APIs dan CLIs

Untuk instance baru, Anda dapat menggunakan RunInstancesAPIuntuk meluncurkan instance baru yang memerlukan penggunaan. IMDSv2 Untuk informasi selengkapnya, lihat Mengonfigurasi opsi metadata instans untuk instans baru.

Untuk contoh yang ada, Anda dapat menggunakan ModifyInstanceMetadataOptionsAPIuntuk meminta penggunaan. IMDSv2 Untuk informasi selengkapnya, lihat Mengonfigurasi opsi metadata instans untuk instans yang ada.

Untuk mewajibkan penggunaan IMDSv2 pada semua instans baru yang diluncurkan oleh grup Auto Scaling, grup Auto Scaling Anda dapat menggunakan templat peluncuran atau konfigurasi peluncuran. Saat Anda membuat template peluncuran atau membuat konfigurasi peluncuran, Anda harus mengonfigurasi MetadataOptions parameter agar memerlukan penggunaanIMDSv2. Grup Auto Scaling meluncurkan instans baru menggunakan templat peluncuran atau konfigurasi peluncuran baru, tetapi instans yang ada tidak terpengaruh. Untuk instans yang ada di grup Auto Scaling, Anda dapat menggunakan ModifyInstanceMetadataOptionsAPIuntuk meminta IMDSv2 penggunaan pada instance yang ada, atau menghentikan instance dan grup Auto Scaling akan meluncurkan instance pengganti baru dengan pengaturan opsi metadata instans yang ditentukan dalam templat peluncuran baru atau konfigurasi peluncuran.

Gunakan AMI yang mengkonfigurasi IMDSv2 secara default

Ketika Anda meluncurkan sebuah instance, Anda dapat secara otomatis mengonfigurasinya untuk digunakan secara IMDSv2 default (HttpTokensparameter diatur kerequired) dengan meluncurkannya dengan AMI yang dikonfigurasi dengan ImdsSupport parameter yang disetel kev2.0. Anda dapat mengatur ImdsSupport parameter v2.0 ketika Anda mendaftar AMI menggunakan perintah register-image, atau Anda dapat memodifikasi yang sudah ada AMI dengan menggunakan CLI perintah. modify-image-attributeCLI Untuk informasi selengkapnya, lihat Konfigurasikan AMI.

IAMkebijakan dan SCPs

Anda dapat menggunakan IAM kebijakan atau AWS Organizations kebijakan kontrol layanan (SCP) untuk mengontrol pengguna sebagai berikut:

  • Tidak dapat meluncurkan instance menggunakan RunInstancesAPIkecuali instance dikonfigurasi untuk digunakanIMDSv2.

  • Tidak dapat memodifikasi instance yang sedang berjalan menggunakan ModifyInstanceMetadataOptionsAPIto re-enableIMDSv1.

IAMKebijakan atau SCP harus berisi kunci IAM kondisi berikut:

  • ec2:MetadataHttpEndpoint

  • ec2:MetadataHttpPutResponseHopLimit

  • ec2:MetadataHttpTokens

Jika parameter dalam CLI panggilan API atau tidak cocok dengan status yang ditentukan dalam kebijakan yang berisi kunci kondisi, CLI panggilan API atau gagal dengan UnauthorizedOperation respons.

Selanjutnya, Anda dapat memilih lapisan perlindungan tambahan untuk menegakkan perubahan dari IMDSv1 keIMDSv2. Pada lapisan manajemen akses sehubungan dengan kredensi APIs panggilan via EC2 Peran, Anda dapat menggunakan kunci kondisi baru baik dalam kebijakan atau IAM AWS Organizations kebijakan kontrol layanan (SCPs). Secara khusus, dengan menggunakan kunci kondisi ec2:RoleDelivery dengan nilai 2.0 dalam IAM kebijakan Anda, API panggilan yang dilakukan dengan kredensi EC2 Peran yang diperoleh dari IMDSv1 akan menerima respons. UnauthorizedOperation Hal yang sama dapat dicapai secara lebih luas dengan kondisi yang dibutuhkan oleh seorangSCP. Ini memastikan bahwa kredensional yang dikirim melalui IMDSv1 tidak dapat benar-benar digunakan untuk memanggil APIs karena API panggilan apa pun yang tidak cocok dengan kondisi yang ditentukan akan menerima kesalahanUnauthorizedOperation.

Misalnya IAM kebijakan, lihatCara menggunakan metadata instans. Untuk informasi selengkapnyaSCPs, lihat Kebijakan Kontrol Layanan di AWS Organizations Panduan Pengguna.

Dengan menggunakan alat di atas, kami sarankan Anda mengikuti jalur ini untuk beralih ke. IMDSv2

Langkah 1: Pada awal

PerbaruiSDKs,CLIs, dan perangkat lunak Anda yang menggunakan kredensil Peran pada EC2 instansnya ke versi yang kompatibel dengannya. IMDSv2 Untuk informasi tentang memperbaruiCLI, lihat Memutakhirkan ke versi terbaru AWS CLIdi AWS Command Line Interface Panduan Pengguna.

Kemudian, ubah perangkat lunak Anda yang secara langsung mengakses metadata instance (dengan kata lain, yang tidak menggunakanSDK) menggunakan permintaan. IMDSv2 Anda dapat menggunakan IMDSPacket Analyzer untuk mengidentifikasi perangkat lunak yang perlu Anda ubah untuk menggunakan IMDSv2 permintaan.

Langkah 2: Lacak kemajuan transisi Anda

Lacak kemajuan transisi Anda dengan menggunakan CloudWatch metrikMetadataNoToken. Metrik ini menunjukkan jumlah IMDSv1 panggilan ke IMDS instans Anda. Untuk informasi selengkapnya, lihat Metrik instans.

Langkah 3: Ketika tidak ada IMDSv1 penggunaan

Saat CloudWatch metrik MetadataNoToken mencatat IMDSv1 penggunaan nol, instance Anda siap untuk sepenuhnya dialihkan ke penggunaan. IMDSv2 Pada tahap ini, Anda dapat melakukan hal berikut:

  • Akun default

    Anda dapat mengatur IMDSv2 agar wajib sebagai akun default. Ketika sebuah instance diluncurkan, konfigurasi instans secara otomatis diatur ke default akun.

    Untuk mengatur default akun, lakukan hal berikut:

    • EC2Konsol Amazon: Di EC2 Dasbor, di bawah atribut Akun, Perlindungan dan keamanan data, untuk IMDSdefault, setel layanan metadata Instance ke versi Diaktifkan dan Metadata ke V2 saja (diperlukan token). Untuk informasi selengkapnya, lihat Tetapkan IMDSv2 sebagai default untuk akun.

    • AWS CLI: Gunakan modify-instance-metadata-defaultsCLIperintah dan tentukan --http-tokens required dan--http-put-response-hop-limit 2.

  • Instans baru

    Saat meluncurkan instans baru, Anda dapat melakukan hal berikut:

    • EC2Konsol Amazon: Di wizard instance peluncuran, setel Metadata yang dapat diakses ke versi Enabled dan Metadata ke V2 saja (diperlukan token). Untuk informasi selengkapnya, lihat Konfigurasikan instans saat peluncuran.

    • AWS CLI: Gunakan CLI perintah run-instance dan tentukan yang IMDSv2 diperlukan.

  • Instans yang ada

    Untuk instans yang ada, Anda dapat melakukan hal berikut:

    • EC2Konsol Amazon: Pada halaman Instans, pilih instans Anda, pilih Tindakan, Pengaturan instans, Ubah opsi metadata instans, dan untuk IMDSv2, pilih Diperlukan. Untuk informasi selengkapnya, lihat Kebutuhan penggunaan IMDSv2.

    • AWS CLI: Gunakan modify-instance-metadata-optionsCLIperintah untuk menentukan bahwa hanya IMDSv2 yang akan digunakan.

    Anda dapat memodifikasi opsi metadata instans pada instans yang sedang berjalan, dan Anda tidak perlu memulai ulang instans setelah memodifikasi opsi metadata instans.

Langkah 4: Periksa apakah instance Anda dialihkan ke IMDSv2

Anda dapat memeriksa apakah ada instance yang belum dikonfigurasi untuk memerlukan penggunaanIMDSv2, dengan kata lain, masih IMDSv2 dikonfigurasi sebagaioptional. Jika ada instance yang masih dikonfigurasi sebagaioptional, Anda dapat memodifikasi opsi metadata instance yang akan dibuat IMDSv2 required dengan mengulangi Langkah 3 sebelumnya.

Untuk memfilter instans Anda:

  • EC2Konsol Amazon: Di halaman Instans, filter instance Anda menggunakan filter IMDSv2= opsional. Untuk informasi selengkapnya tentang pemfilteran, lihat Memfilter sumber daya menggunakan konsol. Anda juga dapat melihat apakah IMDSv2 diperlukan atau opsional untuk setiap instance: Di jendela Preferensi, aktifkan IMDSv2untuk menambahkan IMDSv2kolom ke tabel Instances.

  • AWS CLI: Gunakan CLI perintah describe-instance dan filter denganmetadata-options.http-tokens = optional, sebagai berikut:

    aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text

Langkah 5: Ketika semua instance Anda dialihkan ke IMDSv2

Tombol ec2:MetadataHttpTokensec2:MetadataHttpPutResponseHopLimit,, dan ec2:MetadataHttpEndpoint IAM kondisi dapat digunakan untuk mengontrol penggunaan RunInstancesdan ModifyInstanceMetadataOptionsAPIsdan yang sesuaiCLIs. Jika kebijakan dibuat, dan parameter dalam API panggilan tidak cocok dengan status yang ditentukan dalam kebijakan menggunakan kunci kondisi, CLI panggilan API atau akan gagal dengan UnauthorizedOperation respons. Misalnya IAM kebijakan, lihatCara menggunakan metadata instans.

Selanjutnya, setelah Anda menonaktifkanIMDSv1, Anda dapat menggunakan MetadataNoTokenRejected CloudWatch metrik untuk melacak berapa kali IMDSv1 panggilan dicoba dan ditolak. Jika, setelah menonaktifkanIMDSv1, Anda memiliki perangkat lunak yang tidak berfungsi dengan benar dan catatan MetadataNoTokenRejected metrik IMDSv1 memanggil, kemungkinan perangkat lunak ini perlu diperbarui untuk digunakan. IMDSv2

Gunakan yang didukung AWS SDK

Untuk menggunakannyaIMDSv2, EC2 instans Anda harus menggunakan AWS SDKversi yang mendukung penggunaanIMDSv2. Versi terbaru dari semua AWS SDKsdukungan menggunakanIMDSv2.

penting

Kami menyarankan Anda untuk tetap up to date dengan SDK rilis untuk mengikuti fitur terbaru, pembaruan keamanan, dan dependensi yang mendasarinya. Penggunaan berkelanjutan dari SDK versi yang tidak didukung tidak disarankan dan dilakukan sesuai kebijaksanaan Anda. Untuk informasi lebih lanjut, lihat AWS SDKsdan kebijakan pemeliharaan alat di AWS SDKsdan Panduan Referensi Alat.

Berikut ini adalah versi minimum yang mendukung penggunaanIMDSv2:

Contoh untuk IMDSv2

Jalankan contoh berikut di EC2 instans Amazon Anda untuk mengambil metadata instans. IMDSv2

Pada contoh Windows, Anda dapat menggunakan Windows PowerShell atau Anda dapat menginstal c URL atau wget. Jika Anda menginstal alat pihak ketiga pada instance Windows, pastikan Anda membaca dokumentasi yang menyertainya dengan cermat, karena panggilan dan outputnya mungkin berbeda dari yang dijelaskan di sini.

Dapatkan versi metadata instans yang tersedia

Contoh ini mendapatkan versi metadata instans yang tersedia. Setiap versi mengacu pada build metadata instans jika kategori metadata instans baru dirilis. Versi build metadata instance tidak berkorelasi dengan versi Amazon. EC2 API Versi sebelumnya tersedia untuk Anda jika Anda memiliki skrip yang mengandalkan struktur dan informasi yang ada di versi sebelumnya.

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest

Dapatkan item metadata tingkat atas

Contoh ini mendapatkan item metadata tingkat atas. Untuk informasi selengkapnya tentang item dalam respons, lihatKategori metadata instans.

Perhatikan bahwa tag disertakan dalam output ini hanya jika Anda mengizinkan akses. Untuk informasi selengkapnya, lihat Mengizinkan akses ke tanda dalam metadata instans.

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-life-cycle instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-life-cycle instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/

Dapatkan nilai untuk item metadata

Contoh-contoh ini mendapatkan nilai dari beberapa item metadata tingkat atas yang diperoleh pada contoh sebelumnya. Permintaan ini menggunakan token tersimpan yang dibuat menggunakan perintah dalam contoh sebelumnya. Token tidak boleh kedaluwarsa.

cURL
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
PowerShell
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com

Dapatkan daftar kunci publik yang tersedia

Contoh ini mendapatkan daftar kunci publik yang tersedia.

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key

Tunjukkan format di mana kunci publik 0 tersedia

Contoh ini menunjukkan format di mana kunci publik 0 tersedia.

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/ openssh-key
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key openssh-key

Dapatkan kunci publik 0 (dalam format SSH tombol Buka)

Contoh ini mendapat kunci publik 0 (dalam format SSH kunci Terbuka).

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key

Dapatkan ID subnet untuk instans

Contoh ini mendapatkan ID subnet untuk sebuah instans.

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7
PowerShell
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7

Dapatkan tanda instans untuk sebuah instans

Jika akses ke tag instance dalam metadata instance diaktifkan, Anda bisa mendapatkan tag untuk instance dari metadata instance. Untuk informasi selengkapnya, lihat Mengambil tanda dari metadata instans.

Contoh untuk IMDSv1

Jalankan contoh berikut di EC2 instans Amazon Anda untuk mengambil metadata instans. IMDSv1

Pada contoh Windows, Anda dapat menggunakan Windows PowerShell atau Anda dapat menginstal c URL atau wget. Jika Anda menginstal alat pihak ketiga pada instance Windows, pastikan Anda membaca dokumentasi yang menyertainya dengan cermat, karena panggilan dan outputnya mungkin berbeda dari yang dijelaskan di sini.

Dapatkan versi metadata instans yang tersedia

Contoh ini mendapatkan versi metadata instans yang tersedia. Setiap versi mengacu pada build metadata instans jika kategori metadata instans baru dirilis. Versi build metadata instance tidak berkorelasi dengan versi Amazon. EC2 API Versi sebelumnya tersedia untuk Anda jika Anda memiliki skrip yang mengandalkan struktur dan informasi yang ada di versi sebelumnya.

cURL
[ec2-user ~]$ curl http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/ 1.0 2007-01-19 2007-03-01 2007-08-29 2007-10-10 2007-12-15 2008-02-01 2008-09-01 2009-04-04 2011-01-01 2011-05-01 2012-01-12 2014-02-25 2014-11-05 2015-10-20 2016-04-19 ... latest

Dapatkan item metadata tingkat atas

Contoh ini mendapatkan item metadata tingkat atas. Untuk informasi selengkapnya tentang item dalam respons, lihatKategori metadata instans.

Perhatikan bahwa tag disertakan dalam output ini hanya jika Anda mengizinkan akses. Untuk informasi selengkapnya, lihat Mengizinkan akses ke tanda dalam metadata instans.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ tags/

Dapatkan nilai untuk item metadata

Contoh-contoh ini mendapatkan nilai dari beberapa item metadata tingkat atas yang diperoleh pada contoh sebelumnya.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ami-id ami-0abcdef1234567890
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/reservation-id r-0efghijk987654321
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-hostname ec2-203-0-113-25.compute-1.amazonaws.com

Dapatkan daftar kunci publik yang tersedia

Contoh ini mendapatkan daftar kunci publik yang tersedia.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key

Tunjukkan format di mana kunci publik 0 tersedia

Contoh ini menunjukkan format di mana kunci publik 0 tersedia.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/ openssh-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key openssh-key

Dapatkan kunci publik 0 (dalam format SSH tombol Buka)

Contoh ini mendapat kunci publik 0 (dalam format SSH kunci Terbuka).

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key

Dapatkan ID subnet untuk instans

Contoh ini mendapatkan ID subnet untuk sebuah instans.

cURL
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7
PowerShell
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id subnet-be9b61d7

Dapatkan tanda instans untuk sebuah instans

Jika akses ke tag instance dalam metadata instance diaktifkan, Anda bisa mendapatkan tag untuk instance dari metadata instance. Untuk informasi selengkapnya, lihat Mengambil tanda dari metadata instans.