Identifikasi setiap instance yang diluncurkan dalam satu permintaan - Amazon Elastic Compute Cloud

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

Identifikasi setiap instance yang diluncurkan dalam satu permintaan

Contoh ini menunjukkan bagaimana Anda dapat menggunakan data pengguna dan metadata instans untuk mengonfigurasi instans Amazon Anda. EC2

catatan

Contoh di bagian ini menggunakan IPv4 alamatIMDS: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 berbasis Nitro di subnet yang IPv6 didukung (tumpukan ganda atau hanya). IPv6

Alice ingin meluncurkan empat contoh database favoritnyaAMI, dengan yang pertama bertindak sebagai instance asli dan tiga sisanya bertindak sebagai replika. Saat meluncurkannya, dia ingin menambahkan data pengguna tentang strategi replikasi untuk setiap replika. Dia sadar bahwa data ini akan tersedia untuk keempat instans, jadi dia perlu menyusun data pengguna dengan cara yang memungkinkan setiap instans untuk mengenali bagian mana yang dapat diterapkan padanya. Dia bisa melakukan ini dengan menggunakan nilai metadata instans ami-launch-index, yang akan unik untuk setiap instans. Jika ia memulai lebih dari satu instans secara bersamaan, maka ami-launch-index menunjukkan urutan peluncuran instans tersebut. Nilai instans pertama yang diluncurkan adalah 0.

Berikut adalah data pengguna yang telah dibuat oleh Alice.

replicate-every=1min | replicate-every=5min | replicate-every=10min

Data replicate-every=1min menentukan konfigurasi replika pertama, replicate-every=5min menentukan konfigurasi replika kedua, dan seterusnya. Alice memutuskan untuk memberikan data ini sebagai ASCII string dengan simbol pipa (|) membatasi data untuk instance terpisah.

Alice meluncurkan empat instans menggunakan perintah run-instances, dengan menentukan data pengguna.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --count 4 \ --instance-type t2.micro \ --user-data "replicate-every=1min | replicate-every=5min | replicate-every=10min"

Setelah diluncurkan, semua instans memiliki salinan data pengguna dan metadata umum yang ditampilkan di sini:

  • AMIID: ami-0abcdef1234567890

  • ID Reservasi: r-1234567890abcabc0

  • Kunci publik: tidak ada

  • Nama grup keamanan: default

  • Tipe instans: t2.micro

Namun, setiap instance memiliki metadata unik, seperti yang ditunjukkan pada tabel berikut.

Metadata Nilai
instance-id i-1234567890abcdef0
ami-launch-index 0
public-hostname ec2-203-0-113-25.compute-1.amazonaws.com
public-ipv4 67.202.51.223
local-hostname ip-10-251-50-12.ec2.internal
local-ipv4 10.251.50.35
Metadata Nilai
instance-id i-0598c7d356eba48d7
ami-launch-index 1
public-hostname ec2-67-202-51-224.compute-1.amazonaws.com
public-ipv4 67.202.51.224
local-hostname ip-10-251-50-36.ec2.internal
local-ipv4 10.251.50.36
Metadata Nilai
instance-id i-0ee992212549ce0e7
ami-launch-index 2
public-hostname ec2-67-202-51-225.compute-1.amazonaws.com
public-ipv4 67.202.51.225
local-hostname ip-10-251-50-37.ec2.internal
local-ipv4 10.251.50.37
Metadata Nilai
instance-id i-1234567890abcdef0
ami-launch-index 3
public-hostname ec2-67-202-51-226.compute-1.amazonaws.com
public-ipv4 67.202.51.226
local-hostname ip-10-251-50-38.ec2.internal
local-ipv4 10.251.50.38

Alice bisa menggunakan nilai ami-launch-index untuk menentukan bagian mana dari data pengguna yang berlaku untuk instans tertentu.

  1. Dia terhubung salah satu instans, dan mengambil ami-launch-index untuk instans tersebut agar dapat memastikan bahwa instans itu adalah salah satu replika:

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/meta-data/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-launch-index 2

    Untuk langkah-langkah berikut, fileIMDSv2 permintaan menggunakan token yang disimpan dari sebelumnyaIMDSv2 perintah, dengan asumsi token belum kedaluwarsa.

    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-launch-index 2
  2. Dia menyimpan ami-launch-index sebagai variabel.

    IMDSv2
    [ec2-user ~]$ ami_launch_index=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-launch-index`
    IMDSv1
    [ec2-user ~]$ ami_launch_index=`curl http://169.254.169.254/latest/meta-data/ami-launch-index`
  3. Dia menyimpan data pengguna sebagai variabel.

    IMDSv2
    [ec2-user ~]$ user_data=`curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data`
    IMDSv1
    [ec2-user ~]$ user_data=`curl http://169.254.169.254/latest/user-data`
  4. Akhirnya, Alice menggunakan perintah cut untuk mengekstrak bagian dari data pengguna yang berlaku untuk instans itu.

    IMDSv2
    [ec2-user ~]$ echo $user_data | cut -d"|" -f"$ami_launch_index" replicate-every=5min
    IMDSv1
    [ec2-user ~]$ echo $user_data | cut -d"|" -f"$ami_launch_index" replicate-every=5min