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) atautoken
(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:
-
Gunakan permintaan
PUT
untuk memulai sesi ke layanan metadata instans. PermintaanPUT
mengembalikan sebuah token yang harus disertakan dalam permintaanGET
selanjutnya ke layanan metadata instans. Token diperlukan untuk mengakses metadata menggunakan. IMDSv2 -
Sertakan token dalam semua
GET
permintaan keIMDS. Ketika penggunaan token diatur kerequired
, permintaan tanpa token yang valid atau dengan token kedaluwarsa menerima kode401 - 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.
-
PUT
Permintaan 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.
-
HTTPGET
dan HEAD
metode diizinkan dalam permintaan metadata IMDSv2 contoh. PUT
permintaan 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.