

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

# Versi IMDS di Snowball Edge
<a name="imds-versions"></a>

Anda dapat mengakses metadata instans dari instance yang sedang berjalan menggunakan IMDS versi 2 atau IMDS versi 1:
+ Layanan Metadata Instance versi 2 (IMDSv2), metode berorientasi sesi
+ Layanan Metadata Instance versi 1 (IMDSv1), metode permintaan-respons

Tergantung pada versi perangkat lunak Snow Anda, Anda dapat menggunakan IMDSv1, IMDSv2, atau keduanya. Ini juga tergantung pada jenis AMI yang berjalan di instance EC2 -compatible. Beberapa AMIs, seperti yang menjalankan Ubuntu 20.04, memerlukan IMDSv2. Layanan metadata instance membedakan antara IMDSv1 dan IMDSv2 permintaan berdasarkan keberadaan `PUT` atau header. `GET` IMDSv2menggunakan kedua header ini. IMDSv1 hanya menggunakan `GET` header.

AWS mendorong penggunaan IMDSv2 bukan IMDSv1 karena IMDSv2 mencakup keamanan yang lebih tinggi. Untuk informasi selengkapnya, lihat [Menambahkan pertahanan secara mendalam terhadap firewall terbuka, proxy terbalik, dan kerentanan SSRF dengan penyempurnaan](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) pada Layanan Metadata Instans. EC2 

## IMDSv2 di Tepi Snowball
<a name="imdsv2"></a>

Ketika Anda menggunakan IMDSv2 untuk meminta metadata instance, permintaan harus mengikuti aturan berikut:

1. Gunakan permintaan `PUT` untuk memulai sesi ke layanan metadata instans. `PUT`Permintaan mengembalikan token sesi yang harus disertakan dalam `GET` permintaan berikutnya ke layanan metadata instance. Token sesi yang menentukan durasi sesi. Durasi sesi bisa minimal satu detik dan maksimal enam jam. Selama durasi ini, Anda dapat menggunakan token sesi yang sama untuk permintaan berikutnya. Setelah durasi ini berakhir, Anda harus membuat token sesi baru untuk permintaan future. Token diperlukan untuk mengakses metadata menggunakan. IMDSv2

1. Sertakan token di semua`GET` permintaan ke layanan metadata instance.

   1. Token adalah kunci khusus instance. Token tidak valid pada instance lain EC2 yang kompatibel dan akan ditolak jika Anda mencoba menggunakannya di luar instance tempat token tersebut dihasilkan.

   1. Permintaan `PUT` harus menyertakan header yang menentukan waktu hidup (TTL) untuk token, dalam detik, hingga maksimum enam jam (21.600 detik). Token tersebut mewakili sesi logis. TTL menentukan lamanya waktu token itu valid dan, oleh karena itu, merupakan durasi sesi.

   1. Setelah token kedaluwarsa, untuk terus mengakses metadata instance, Anda harus membuat sesi baru menggunakan permintaan lain. `PUT`

   1. 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 mengakses layanan metadata instance. Namun untuk efisiensi, Anda dapat menentukan durasi yang lebih lama untuk token dan menggunakannya kembali daripada harus menulis`PUT` meminta setiap kali Anda perlu meminta metadata instance. Tidak ada batasan praktis untuk jumlah token yang bersamaan, masing-masing mewakili sesinya sendiri.

HTTP `GET` dan `HEAD` metode diperbolehkan dalam permintaan metadata IMDSv2 contoh. `PUT`permintaan ditolak jika berisi `X-Forwarded-For` header.

Secara default, respons terhadap `PUT` permintaan memiliki batas hop respons (waktu untuk hidup) 1 pada tingkat protokol IP. IMDS for Snow tidak memiliki kemampuan untuk memodifikasi batas hop pada `PUT` respons.

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

1. Membuat token sesi yang berlangsung selama enam jam (21.600 detik) menggunakan permintaan. `PUT`

1. Menyimpan header token sesi dalam variabel bernama`TOKEN`.

1. Meminta item metadata tingkat atas menggunakan token.

Gunakan dua perintah untuk menghasilkan token EC2 yang kompatibel. Anda dapat menjalankan perintah secara terpisah atau sebagai satu perintah.

Pertama, hasilkan token menggunakan perintah berikut.

**catatan**  
`X-aws-ec2-metadata-token-ttl-seconds`adalah header yang diperlukan. Jika header ini tidak disertakan, Anda akan menerima kode kesalahan **400 - Parameter Hilang atau Tidak Valid**.

```
    [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 menggunakan perintah berikut.

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

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

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

**Example dari perintah gabungan**  

```
    [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" -v http://169.254.169.254/latest/meta-data/
```

Setelah Anda membuat token, Anda dapat menggunakannya kembali hingga kedaluwarsa. Perintah contoh berikut mendapatkan ID AMI yang digunakan untuk meluncurkan instance dan menyimpannya di `$TOKEN` dibuat pada contoh sebelumnya.

**Example menggunakan kembali token**  

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

## IMDSv1 di Tepi Snowball
<a name="imdsv1"></a>

IMDSv1 menggunakan model permintaan-respons. Untuk meminta metadata instance, Anda mengirim `GET` permintaan ke layanan metadata instance.

```
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/                   
```

Metadata instans Anda tersedia dari instans yang sedang berjalan, jadi Anda tidak perlu menggunakan EC2 konsol Amazon atau AWS CLI untuk mengaksesnya. Hal ini berguna saat Anda menulis skrip yang akan dijalankan dari instans Anda. Misalnya, Anda dapat mengakses alamat IP lokal instans Anda dari metadata instans untuk mengelola koneksi ke aplikasi eksternal. Metadata instans dibagi menjadi beberapa kategori. Untuk deskripsi setiap kategori metadata instance, lihat Metadata [Instans yang Didukung dan Data Pengguna](https://docs.aws.amazon.com/snowball/latest/developer-guide/edge-compute-instance-metadata.html) dalam panduan ini. 

Untuk melihat semua kategori metadata instance dari dalam instance yang sedang berjalan, gunakan URI berikut: IPv4 

```
    http://169.254.169.254/latest/meta-data/
```

Alamat IP adalah alamat tautan lokal dan hanya valid dari instans. Untuk informasi selengkapnya, lihat [Alamat tautan-lokal](https://en.wikipedia.org/wiki/Link-local_address) di Wikipedia.

Semua metadata instans ditampilkan sebagai teks (tipe konten HTTP `text/plain`).

Permintaan untuk sumber daya metadata tertentu mengembalikan nilai yang sesuai, atau kode kesalahan HTTP **404 - Tidak Ditemukan**, jika sumber daya tidak tersedia.

Permintaan untuk sumber daya metadata umum (ketika URI diakhiri dengan `/` karakter) mengembalikan daftar sumber daya yang tersedia, atau kode kesalahan **404 - Tidak Ditemukan** HTTP jika tidak ada sumber daya tersebut. Item daftar berada pada baris terpisah, diakhiri dengan umpan baris (kode karakter ASCII 10).

Untuk permintaan yang dibuat menggunakan IMDSv1, kode kesalahan HTTP berikut dapat dikembalikan:
+ **400 - Parameter Hilang atau Tidak Valid** - `PUT` Permintaan tidak valid.
+ **401 - Tidak Sah** - `GET` Permintaan menggunakan token yang tidak valid. Tindakan yang disarankan adalah membuat token baru.
+ **403 - Dilarang** - Permintaan tidak diizinkan atau layanan metadata instans dimatikan.