Bagaimana cara kerja Layanan Metadata Instans Versi 2 - Amazon Elastic Compute Cloud

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

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 instance yang dibangun di Sistem AWS Nitro dan dalam subnet yang IPv6 didukung (tumpukan ganda atau hanya). IPv6

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.