Melihat dan membuat kueri metadata VM


Setiap virtual machine (VM) menyimpan metadata-nya di direktori di server metadata. VM Anda otomatis memiliki akses ke API server metadata ini tanpa otorisasi tambahan. Anda dapat menggunakan metode yang dijelaskan di bagian berikut dalam dokumen ini untuk melihat dan membuat kueri nilai metadata VM:

Jika Anda mengalami error saat mengakses server metadata, tinjau Memecahkan masalah akses server metadata.

Sebelum memulai

  • Untuk VM Windows Server, gunakan PowerShell 3.0 atau yang lebih baru. Sebaiknya gunakan ctrl+v untuk menempelkan blok kode yang disalin.
  • Tinjau dasar-dasar cara metadata VM untuk Compute Engine ditentukan, dikategorikan, dan diatur. Untuk mengetahui informasi selengkapnya, lihat artikel Tentang metadata VM.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Python

      Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

        gcloud auth application-default login

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Peran yang diperlukan

Peran dan izin berikut diperlukan untuk melihat metadata kustom dari di luar VM menggunakan konsol Google Cloud, Google Cloud CLI, atau REST. Jika Anda mengkueri metadata secara terprogram dari dalam VM, Anda hanya memerlukan peran dan izin untuk terhubung ke VM.

Untuk mendapatkan izin yang diperlukan guna melihat metadata kustom dari luar VM, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk melihat metadata kustom dari luar VM. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melihat metadata kustom dari luar VM:

  • Untuk melihat metadata project kustom: compute.projects.get di project
  • Untuk melihat metadata zona kustom: compute.instanceSettings.get pada setelan instance di zona yang diperlukan dalam project
  • Untuk melihat metadata kustom untuk instance VM: compute.instances.get di VM
  • Jika VM Anda menggunakan akun layanan: iam.serviceAccounts.actAs di akun layanan atau project

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Mengkueri metadata secara terprogram

Anda dapat mengakses semua metadata dengan mengkueri entri nilai metadata secara terprogram dari dalam VM Linux atau Windows. Dari dalam VM, Anda dapat mengkueri nilai metadata secara terprogram dengan salah satu cara berikut menggunakan alat seperti curl di Linux atau Invoke-RestMethod di Windows:

Endpoint server metadata

Untuk membuat kueri metadata secara terprogram, dari dalam VM, Anda memiliki endpoint server metadata berikut:

  • Untuk semua VM, Anda dapat membuat kueri server metadata menggunakan endpoint http (http://metadata.google.internal/computeMetadata/v1).
  • Untuk Shielded VM, Anda dapat membuat kueri server metadata menggunakan salah satu dari berikut:

Sebagian besar contoh dalam dokumen ini menggunakan endpoint http. Namun, Anda dapat mengakses semua entri metadata yang sama, baik menggunakan endpoint https maupun http.

Bagian dari permintaan metadata

Tabel berikut merangkum bagian-bagian utama permintaan kueri metadata.

Komponen Deskripsi
URL Root

Semua nilai metadata didefinisikan sebagai sub-jalur di bawah URL root berikut:

  • endpoint http:
    • http://metadata.google.internal/computeMetadata/v1
    • http://169.254.169.254/computeMetadata/v1
    • http://metadata.goog/computeMetadata/v1
  • Endpoint https (Pratinjau):
    • https://metadata.google.internal/computeMetadata/v1
      Ini adalah satu-satunya URL yang didukung selama tahap pratinjau.
Header permintaan

Header ini menunjukkan bahwa permintaan dikirim dengan tujuan mengambil nilai metadata, bukan secara tidak sengaja dari sumber yang tidak aman, dan agar server metadata dapat menampilkan data yang Anda minta. Jika Anda tidak memberikan header ini, server metadata akan menolak permintaan Anda.

Metadata-Flavor: Google

Mengkueri satu entri metadata

Gunakan perintah berikut untuk membuat kueri satu entri metadata.

Linux

  1. Hubungkan ke VM Linux Anda.
  2. Dari VM Linux, gunakan alat curl untuk membuat kueri. Untuk membuat kueri instance VM atau entri metadata project, jalankan perintah berikut:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
    

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Misalnya, untuk mengkueri boot image untuk VM, jalankan kueri berikut:

    user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
    

    Outputnya mirip dengan yang berikut ini:

    projects/rhel-cloud/global/images/rhel-8-v20210122

Windows

  1. Hubungkan ke VM Windows Anda.
  2. Dari VM Windows, gunakan perintah Invoke-RestMethod untuk membuat kueri. Untuk membuat kueri instance VM atau entri metadata project, jalankan perintah berikut:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY")
    $value
    

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Misalnya, untuk mengkueri boot image untuk VM, jalankan kueri berikut:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image")
    $value
    

    Outputnya mirip dengan yang berikut ini:

    projects/windows-cloud/global/images/windows-server-2019-dc-v20210112

Mengkueri listingan direktori metadata

Gunakan perintah berikut untuk mengkueri listingan direktori metadata. Listingan direktori adalah entri metadata yang berisi kunci metadata lainnya. Setiap entri metadata yang diakhiri dengan garis miring adalah listingan direktori

Linux

  1. Hubungkan ke VM Linux Anda.

  2. Untuk membuat kueri direktori metadata project atau instance VM, jalankan perintah berikut dari VM Linux Anda:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
      

    Ganti PATH_TO_METADATA_DIRECTORY dengan jalur ke instance VM atau direktori metadata project yang ingin Anda kueri listingannya secara rekursif. Contoh:

    • Untuk melihat entri direktori metadata project attributes, jalur yang harus ditentukan adalah project/attributes/.
    • Untuk melihat entri direktori metadata instance VM disks, jalur yang harus ditentukan adalah instance/disks/.

    Misalnya, pertimbangkan entri disks/, yang merupakan direktori disk yang terpasang ke VM. Untuk mengkueri entri disks/, selesaikan langkah-langkah berikut:

    1. Jalankan perintah alat curl di direktori disk.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
      

      Outputnya mirip dengan hal berikut ini:

      0/
      1/
      2/
      
    2. Jika ingin mengetahui informasi lebih lanjut tentang direktori 0/ disk, Anda dapat mengkueri URL khusus untuk direktori tersebut:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
      

      Outputnya mirip dengan yang berikut ini:

      device-name
      index
      mode
      type
      
    3. Kemudian, untuk mengkueri jenis disk (type) untuk disk 0/, Anda dapat menjalankan perintah berikut:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
      

      Outputnya mirip dengan yang berikut ini:

      PERSISTENT
      

Windows

Entri disks/ adalah direktori disk yang terpasang pada VM. Untuk mengkueri entri disk, selesaikan langkah-langkah berikut:

  1. Hubungkan ke VM Windows Anda.

  2. Untuk membuat kueri instance VM atau direktori metadata project, jalankan perintah berikut dari VM Windows Anda:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/")
    $value
    

    Ganti PATH_TO_METADATA_DIRECTORY dengan jalur ke instance VM atau direktori metadata project yang ingin Anda kueri listingannya secara rekursif. Contoh:

    • Untuk melihat entri direktori metadata project attributes, jalur yang harus ditentukan adalah project/attributes/.
    • Untuk melihat entri direktori metadata instance VM disks, jalur yang harus ditentukan adalah instance/disks/.

    Misalnya, pertimbangkan entri disks/, yang merupakan direktori disk yang terpasang ke VM. Untuk mengkueri entri disks/, selesaikan langkah-langkah berikut:

    1. Gunakan perintah Invoke-RestMethod pada direktori disk.

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/")
      $value
      

      Outputnya mirip dengan yang berikut ini:

      0/
      1/
      2/
      
    2. Jika ingin mengetahui informasi lebih lanjut tentang direktori 0/ disk, Anda dapat mengkueri URL khusus untuk direktori tersebut:

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/")
      $value
      

      Outputnya mirip dengan yang berikut ini:

      device-name
      index
      mode
      type
      
    3. Kemudian, untuk mengkueri jenis disk (type) untuk disk 0/, Anda dapat menjalankan perintah berikut:

      PS C:\> 
      $value = (Invoke-RestMethod `
                -Headers @{'Metadata-Flavor' = 'Google'} `
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type")
      $value
      

      Outputnya mirip dengan yang berikut ini:

      PERSISTENT
      

Mengkueri listingan direktori secara berulang

Jika Anda ingin menampilkan semua konten dalam direktori, gunakan parameter kueri recursive=true dengan permintaan Anda:

Linux

  1. Hubungkan ke VM Linux Anda.

  2. Dari VM Linux, gunakan alat curl untuk membuat kueri. Untuk membuat kueri listingan secara rekursif untuk instance VM atau direktori metadata project, jalankan perintah berikut:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
    

    Ganti PATH_TO_METADATA_DIRECTORY dengan jalur ke instance VM atau direktori metadata project yang ingin Anda kueri listingannya secara rekursif. Contoh:

    • Untuk melihat entri direktori metadata project attributes, jalur yang harus ditentukan adalah project/attributes/.
    • Untuk melihat entri direktori metadata instance VM disks, jalur yang harus ditentukan adalah instance/disks/.

    Misalnya, perintah berikut secara rekursif mengkueri listingan metadata instance untuk direktori disks/.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
      

    Outputnya mirip dengan hal berikut ini:

      [{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"},
      {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"},
      {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
      

    Secara default, konten rekursif ditampilkan dalam format JSON. Jika Anda ingin menampilkan konten ini dalam format teks, tambahkan parameter kueri alt=text:

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text" -H "Metadata-Flavor: Google"
      

    Outputnya mirip dengan yang berikut ini:

      0/device-name boot
      0/index 0
      0/mode READ_WRITE
      0/type PERSISTENT
      1/device-name persistent-disk-1
      1/index 1
      1/mode READ_WRITE
      1/type PERSISTENT
      2/device-name persistent-disk-1
      2/index 2
      2/mode READ_ONLY
      2/type PERSISTENT
      

Windows

  1. Hubungkan ke VM Windows Anda.

  2. Dari VM Windows, gunakan perintah Invoke-RestMethod untuk membuat kueri. Untuk membuat kueri listingan secara rekursif untuk instance VM atau direktori metadata project, jalankan perintah berikut:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true")
      $value
      

    Ganti PATH_TO_METADATA_DIRECTORY dengan jalur ke instance VM atau direktori metadata project yang ingin Anda kueri listingannya secara rekursif. Contoh:

    • Untuk melihat entri direktori metadata project attributes, jalur yang harus ditentukan adalah project/attributes/.
    • Untuk melihat entri direktori metadata instance VM disks, jalur yang harus ditentukan adalah instance/disks/.

    Misalnya, perintah berikut secara rekursif mengkueri listingan metadata instance untuk direktori disks/.

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true")
    $value
    

    Outputnya mirip dengan hal berikut ini:

    [{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"},
    {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"},
    {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
    

    Secara default, konten rekursif ditampilkan dalam format JSON. Jika Anda ingin menampilkan konten ini dalam format teks, tambahkan parameter kueri alt=text:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text")
    $value
    

    Outputnya mirip dengan yang berikut ini:

    0/device-name boot
    0/index 0
    0/mode READ_WRITE
    0/type PERSISTENT
    1/device-name persistent-disk-1
    1/index 1
    1/mode READ_WRITE
    1/type PERSISTENT
    2/device-name persistent-disk-1
    2/index 2
    2/mode READ_ONLY
    2/type PERSISTENT
    

Memformat output kueri

Secara default, setiap endpoint memiliki format respons yang telah ditentukan. Beberapa endpoint mungkin menampilkan data dalam format JSON secara default, sementara endpoint lainnya mungkin menampilkan data sebagai string. Anda dapat mengganti spesifikasi format data default menggunakan parameter kueri alt=json atau alt=text, yang masing-masing menampilkan data dalam format string JSON atau sebagai representasi teks biasa.

Linux

  1. Hubungkan ke VM Linux Anda.
  2. Dari VM Linux, gunakan alat curl untuk membuat kueri. Untuk mengubah format data respons kueri untuk instance VM atau entri metadata project, jalankan perintah berikut:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
    

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • DATA_FORMAT: format yang Anda inginkan untuk data respons kueri—misalnya, text atau json.

Contoh

Misalnya, kunci tags otomatis menampilkan data dalam format JSON. Sebagai gantinya, Anda dapat menampilkan data dalam format teks, dengan menentukan parameter kueri alt=text.

Kueri default

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
  

Outputnya mirip dengan yang berikut ini:

  ["http-server", "db-client", "app-server", "mysql-server"]
  

Kueri dengan pemformatan

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
  

Outputnya mirip dengan yang berikut ini:

  http-server
  db-client
  app-server
  mysql-server

Windows

  1. Hubungkan ke VM Windows Anda.
  2. Dari VM Windows, gunakan perintah Invoke-RestMethod untuk membuat kueri. Untuk mengubah format data respons kueri untuk instance VM atau entri metadata project, jalankan perintah berikut:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT")
      $value
      

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • DATA_FORMAT: format yang Anda inginkan untuk data respons kueri—misalnya, text atau json.

Contoh

Misalnya, kunci tags otomatis menampilkan data dalam format JSON. Sebagai gantinya, Anda dapat menampilkan data dalam format teks, dengan menentukan parameter kueri alt=text.

Kueri default

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags")
  $value
  

Outputnya mirip dengan yang berikut ini:

  ["http-server", "db-client", "app-server", "mysql-server"]
  

Kueri dengan pemformatan

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text")
  $value
  

Outputnya mirip dengan yang berikut ini:

  http-server
  db-client
  app-server
  mysql-server

Mengkueri perubahan metadata menggunakan fitur wait-for-change

Mengingat bahwa nilai metadata dapat berubah saat VM berjalan, server metadata dapat diberi tahu tentang perubahan metadata menggunakan fitur wait-for-change. Dengan opsi ini, permintaan hanya menampilkan output saat metadata yang Anda tentukan telah berubah.

Anda dapat menggunakan fitur ini pada metadata kustom atau metadata yang ditentukan server. Jadi, jika ada perubahan pada VM atau project Anda, atau jika seseorang memperbarui entri metadata kustom, Anda dapat bereaksi terhadap perubahan tersebut secara terprogram.

Misalnya, Anda dapat membuat permintaan pada kunci tags sehingga permintaan hanya ditampilkan jika konten metadata tag telah berubah. Saat ditampilkan, permintaan akan memberikan nilai baru dari kunci metadata tersebut.

Fitur wait-for-change juga memungkinkan Anda mencocokkan permintaan dan menyetel waktu tunggu.

Saat menggunakan fitur wait-for-change, pertimbangkan hal berikut:

  • Anda hanya dapat melakukan permintaan wait-for-change di endpoint metadata atau secara berulang pada konten direktori. Anda tidak dapat melakukan permintaan wait-for-change pada listingan direktori. Jika Anda mencoba melakukannya, server metadata akan menggagalkan permintaan Anda dan menampilkan error 400 Invalid Request.

  • Anda tidak dapat membuat permintaan wait-for-change untuk token akun layanan. Jika Anda mencoba membuat permintaan wait-for-change ke URL token akun layanan, permintaan akan langsung gagal dan menampilkan error 400 Invalid Request.

Untuk membuat permintaan wait-for-change, buat kueri kunci metadata dan tambahkan parameter kueri ?wait_for_change=true:

Linux

  1. Hubungkan ke VM Linux Anda.
  2. Dari VM Linux, gunakan alat curl untuk membuat kueri. Untuk melakukan permintaan wait-for-change untuk instance VM atau entri metadata project, jalankan perintah berikut:

    curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
    

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Setelah ada perubahan pada kunci metadata yang ditentukan, kueri akan ditampilkan dengan nilai baru.

Contoh

Dalam contoh ini, jika permintaan dibuat ke setInstanceTags method, permintaan akan ditampilkan dengan nilai baru:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
  

Outputnya mirip dengan hal berikut ini:

  http-server
  db-client
  

Anda juga dapat melakukan permintaan wait-for-change secara berulang pada konten direktori:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
  

Server metadata menampilkan konten baru jika ada perubahan:

  {"foo":"bar","baz":"bat"}
  

Windows

  1. Hubungkan ke VM Windows Anda.
  2. Dari VM Windows, gunakan perintah Invoke-RestMethod untuk membuat kueri. Untuk melakukan permintaan wait-for-change untuk instance VM atau entri metadata project, jalankan perintah berikut:

    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true")
    $value
    

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Setelah ada perubahan pada kunci metadata yang ditentukan, kueri akan ditampilkan dengan nilai baru.

Contoh

Setelah ada perubahan pada kunci metadata yang ditentukan, kueri akan ditampilkan dengan nilai baru. Dalam contoh ini, jika permintaan dibuat ke setInstanceTags method, permintaan tersebut akan ditampilkan dengan nilai baru:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true")
  $value
  

Outputnya mirip dengan hal berikut ini:

  http-server
  db-client
  

Anda juga dapat melakukan permintaan wait-for-change secara berulang pada konten direktori:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes?recursive=true&wait_for_change=true")
  $value
  

Server metadata menampilkan konten baru jika ada perubahan:

  {"foo":"bar","baz":"bat"}
  

Menggunakan ETag

Saat Anda mengirimkan kueri wait-for-change, server metadata akan menampilkan respons jika ada sesuatu yang berubah dalam konten metadata tersebut. Namun, ada kondisi race yang melekat antara update metadata dan permintaan wait-for-change yang dikeluarkan, jadi sebaiknya miliki cara yang andal untuk mengetahui bahwa Anda mendapatkan nilai metadata terbaru.

Untuk mengatasinya, Anda bisa menggunakan parameter kueri last_etag yang membandingkan nilai ETag yang Anda berikan dengan nilai ETag yang disimpan di server metadata. Jika nilai ETag sesuai, permintaan wait-for-change akan diterima. Jika nilai ETag tidak cocok, hal ini menunjukkan bahwa konten metadata telah berubah sejak terakhir kali Anda mengambil nilai ETag, dan server metadata akan segera ditampilkan dengan nilai terbaru ini.

VM Linux

Guna mendapatkan nilai ETag saat ini untuk kunci metadata, selesaikan langkah-langkah berikut:

  1. Hubungkan ke VM Linux Anda.
  2. Buat permintaan ke kunci tersebut, lalu cetak header-nya. Untuk melakukannya, gunakan alat curl dengan flag -v. Untuk mendapatkan ETag saat ini untuk instance VM atau entri metadata project, jalankan perintah berikut:

    curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
    

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Misalnya, perintah berikut mendapatkan nilai ETag saat ini untuk kunci metadata instance tags.

      user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
      

    Outputnya mirip dengan hal berikut ini:

    * About to connect() to metadata port 80 (#0)
    * Trying 169.254.169.254... connected
    * Connected to metadata (169.254.169.254) port 80 (#0)
    > GET /computeMetadata/v1/instance/tags HTTP/1.1
    > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
    > Host: metadata
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Content-Type: application/text
    < ETag: 411261ca6c9e654e
    < Date: Wed, 13 Feb 2013 22:43:45 GMT
    < Server: Metadata Server for VM
    < Content-Length: 26
    < X-XSS-Protection: 1; mode=block
    < X-Frame-Options: SAMEORIGIN
    <
    http-server
    db-client
  3. Anda kemudian dapat menggunakan nilai ETag tersebut dengan perintah alat curl dalam permintaan wait-for-change. Untuk menggunakan nilai ETag untuk permintaan wait-for-change metadata instance atau project, jalankan perintah berikut:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
      

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • ETAG: nilai ETag untuk kunci metadata.

    Dalam contoh ini, perintah berikut menggunakan nilai ETag untuk kunci tags dan kueri untuk entri metadata instance.

      user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"
      

    Server metadata sesuai dengan nilai ETag yang ditentukan. Jika nilai tersebut berubah, permintaan akan ditampilkan dengan konten baru kunci metadata Anda.

VM Windows

Guna mendapatkan nilai ETag saat ini untuk kunci metadata, selesaikan langkah-langkah berikut:

  1. Hubungkan ke VM Windows Anda.
  2. Buat permintaan ke kunci tersebut, lalu cetak header-nya. Pada Windows, gunakan perintahInvoke-WebRequest. Untuk mendapatkan ETag saat ini untuk instance VM atau entri metadata project, jalankan perintah berikut:

      $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} `
      -Uri http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY)

    $value.Headers.ETag

    Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

    • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
    • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
    • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Misalnya, perintah berikut mendapatkan nilai ETag saat ini untuk kunci metadata instance tags.

      PS C:> 
      $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} `
      -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)

    $value.Headers.ETag

    Outputnya mirip dengan hal berikut ini:

      * About to connect() to metadata port 80 (#0)
      * Trying 169.254.169.254... connected
      * Connected to metadata (169.254.169.254) port 80 (#0)
      > GET /computeMetadata/v1/instance/tags HTTP/1.1
      > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
      > Host: metadata
      > Accept: /
      >
      < HTTP/1.1 200 OK
      < Content-Type: application/text
      < ETag: 411261ca6c9e654e
      < Date: Wed, 13 Feb 2013 22:43:45 GMT
      < Server: Metadata Server for VM
      < Content-Length: 26
      < X-XSS-Protection: 1; mode=block
      < X-Frame-Options: SAMEORIGIN
      <
      http-server
      db-client

  3. Anda kemudian dapat menggunakan nilai ETag tersebut dalam permintaan wait-for-change. Untuk menggunakan nilai ETag untuk permintaan wait-for-change metadata instance atau project, jalankan perintah berikut:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG")
      $value
      

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • ETAG: nilai ETag untuk kunci metadata.

    Dalam contoh ini, perintah berikut menggunakan nilai ETag untuk kunci tags dan kueri untuk entri metadata instance.

      PS C:> 
      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
                -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e")
      $value
      

    Server metadata sesuai dengan nilai ETag yang ditentukan. Jika nilai tersebut berubah, permintaan akan ditampilkan dengan konten baru kunci metadata Anda.

Python

Contoh Python berikut menunjukkan cara mengamati perubahan di server metadata secara terprogram.

Contoh ini menetapkan ETag awal ke 0. Server metadata tidak akan menampilkan respons dengan 0 sebagai nilai ETag. Jika 0 ditentukan sebagai ETag terakhir dalam permintaan, server metadata akan merespons ETag dan nilai saat ini. Tindakan ini akan menghemat sedikit kode yang diperlukan untuk mendapatkan nilai awal dan ETag.

last_etag = "0"

while True:
    r = requests.get(
        url,
        params={"last_etag": last_etag, "wait_for_change": True},
        headers=METADATA_HEADERS,
    )

    # During maintenance the service can return a 503, so these should
    # be retried.
    if r.status_code == 503:
        time.sleep(1)
        continue
    r.raise_for_status()

    last_etag = r.headers["etag"]

Menyetel waktu tunggu

Jika Anda ingin waktu permintaan wait-for-change habis setelah beberapa detik tertentu, Anda dapat menyetel parameter timeout_sec. Parameter timeout_sec membatasi waktu tunggu permintaan ke jumlah detik yang Anda tentukan, dan saat permintaan mencapai batas tersebut, parameter akan menampilkan konten kunci metadata saat ini.

Saat Anda menyetel parameter timeout_sec, permintaan akan selalu ditampilkan setelah jumlah detik yang ditentukan, terlepas dari apakah nilai metadata benar-benar berubah atau tidak. Anda hanya dapat menyetel nilai bilangan bulat sebagai waktu tunggu.

Linux

  1. Hubungkan ke VM Linux Anda.
  2. Dari VM Linux, gunakan alat curl untuk membuat kueri. Untuk melakukan permintaan wait-for-change dengan nilai waktu tunggu untuk instance VM atau entri metadata project, jalankan perintah berikut:

      curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
      

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • TIMEOUT: nilai waktu tunggu.

Misalnya, perintah berikut melakukan permintaan wait-for-change yang ditetapkan ke waktu habis setelah 360 detik:

  user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360" -H "Metadata-Flavor: Google"
  

Windows

  1. Hubungkan ke VM Windows Anda.
  2. Dari VM Windows, gunakan perintah Invoke-RestMethod untuk membuat kueri. Untuk melakukan permintaan wait-for-change dengan nilai waktu tunggu untuk instance VM atau entri metadata project, jalankan perintah berikut:

      $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
              -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT")
      $value
      

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • TIMEOUT: nilai waktu tunggu.

Misalnya, perintah berikut melakukan permintaan wait-for-change yang ditetapkan ke waktu habis setelah 360 detik:

  PS C:> 
  $value = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'}
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360")
  $value
  

Membuat kueri metadata menggunakan endpoint server metadata HTTPS

Endpoint server metadata HTTPS (https://metadata.google.internal/computeMetadata/v1) memberikan keamanan tambahan untuk transmisi informasi antara server metadata dan VM.

Untuk menggunakan endpoint server metadata HTTPS, tinjau persyaratan berikut:

  • Anda harus meminta akses ke pratinjau endpoint server metadata HTTPS.

  • Setelah project ditambahkan ke daftar yang diizinkan, Anda dapat membuat VM. VM harus memenuhi persyaratan berikut:

    • Lingkungan tamu harus berjalan di VM.
    • VM harus berupa Shielded VM. Hal ini karena server metadata HTTPS memerlukan penggunaan Unified Extensible Firmware Interface (UEFI) dan Virtual Trusted Platform Module (vTPM) untuk memverifikasi sertifikat.

Untuk mengetahui ringkasan cara menangani kueri ke endpoint server metadata HTTPS, lihat Endpoint server metadata HTTPS. Anda dapat menjalankan semua kueri yang sama ke server metadata, baik menggunakan endpoint https maupun http. Namun, untuk memanggil endpoint https, Anda harus menentukan jalur ke sertifikat identitas klien dan dalam beberapa kasus sertifikat root.

Perintah berikut menunjukkan cara membuat kueri server metadata menggunakan endpoint https.

Linux

  1. Hubungkan ke VM Linux Anda.

  2. Dari VM Linux, gunakan alat curl untuk membuat kueri dan menentukan sertifikat identitas klien. Secara opsional, Anda juga dapat menentukan root certificate.

    curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \
      -E CLIENT_CERTIFICATE \
      [--cacert ROOT_CERTIFICATE] \
      -H "Metadata-Flavor: Google"
    

    Ganti kode berikut:

    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.
    • CLIENT_CERTIFICATE: jalur ke sertifikat identitas klien: /run/google-mds-mtls/client.key.
    • Opsional: ROOT_CERTIFICATE: jalur ke sertifikat root: /run/google-mds-mtls/root.crt.

    Misalnya, untuk mengkueri image booting untuk VM, jalankan kueri berikut:

    user@myinst:~$ 
    curl "https://metadata.google.internal/computeMetadata/v1/instance/image" \
      -E /run/google-mds-mtls/client.key \
      -H "Metadata-Flavor: Google"
    

    Outputnya mirip dengan hal berikut ini:

    projects/rhel-cloud/global/images/rhel-8-v20210122

    Jika Anda melihat pesan error, tinjau dokumentasi pemecahan masalah.

Windows

  1. Hubungkan ke VM Windows Anda.

  2. Dapatkan sertifikat identitas klien menggunakan salah satu perintah berikut:

    • $cert = Get-PfxCertificate -FilePath "C:\ProgramData\Google\Compute Engine\mds-mtls-client.key.pfx"
      
    • $cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Issuer -like "google.internal" }
      
  3. Dari VM Windows, gunakan perintah Invoke-RestMethod dan tentukan sertifikat identitas klien untuk membuat kueri.

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} -Certificate CLIENT_CERTIFICATE `
              -Uri "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY")
    $value
    

    Ganti kode berikut:

    • CLIENT_CERTIFICATE: jalur ke sertifikat identitas klien di VM. Ini adalah variabel $cert yang ditetapkan pada langkah sebelumnya.
    • Ganti PATH_TO_METADATA_ENTRY dengan jalur ke instance VM atau kunci metadata project yang nilainya ingin Anda kueri. Jika kunci berada di sub-direktori direktori instance atau project, pastikan untuk menyertakan sub-direktori juga. Contoh:

      • Untuk melihat kunci metadata project-id, yang disimpan dalam metadata project, tentukan project/project-id.
      • Untuk melihat kunci metadata image, yang disimpan dalam metadata instance VM, tentukan instance/image.
      • Untuk melihat enable-oslogin yang dapat disimpan di subdirektori atribut metadata project atau instance VM, tentukan project/attributes/enable-oslogin atau instance/attributes/enable-oslogin, bergantung pada kasus penggunaan Anda.

    Misalnya, untuk mengkueri image booting untuk VM Windows server 2019, jalankan kueri berikut:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Headers @{'Metadata-Flavor' = 'Google'} -Certificate $cert `
              -Uri "https://metadata.google.internal/computeMetadata/v1/instance/image")
    $value
    

    Outputnya mirip dengan hal berikut ini:

    projects/windows-cloud/global/images/windows-server-2019-dc-v20210112

Batasan

  • Setiap permintaan yang berisi header X-Forwarded-For akan ditolak secara otomatis oleh server metadata. Header ini umumnya menunjukkan bahwa permintaan melalui proxy dan mungkin bukan permintaan yang dibuat oleh pengguna yang diberi otorisasi. Untuk alasan keamanan, semua permintaan tersebut ditolak.

  • Saat Anda menggunakan perintah curl untuk mengambil metadata dari server, perhatikan bahwa beberapa karakter yang dienkode tidak didukung di jalur permintaan. Karakter yang dienkode hanya didukung di jalur kueri.

    Misalnya, permintaan berikut mungkin tidak berfungsi:

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/123456789-compute%40/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Agar permintaan ini berfungsi, Anda harus mengganti karakter terenkode yang tidak didukung di jalur permintaan (%40) dengan nilai setara yang diterima (@).

    curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/1234567898-compute@/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"

    Tabel berikut merangkum karakter yang dienkode yang tidak didukung di jalur permintaan.

    Karakter yang dienkode Nilai yang diterima
    %21
    !
    %24
    $
    %27
    '
    %28
    (
    %29
    )
    %2A
    *
    %2C
    ,
    %40
    @

Kode status

Saat Anda membuat permintaan ke server metadata, server metadata akan menampilkan kode status HTTP standar untuk menunjukkan keberhasilan atau kegagalan. Terkadang, kondisi jaringan atau peristiwa host dapat menyebabkan server metadata gagal memenuhi permintaan Anda dan menampilkan kode error. Dalam hal ini, Anda harus mendesain aplikasi yang fault-tolerant serta dapat mengenali dan menangani error ini.

Untuk mengetahui daftar mendetail kode status yang dapat ditampilkan, lihat Memecahkan masalah kode server.

Melihat metadata kustom untuk VM Anda

Anda dapat melihat nilai metadata kustom untuk VM Compute Engine dengan salah satu cara berikut:

Melihat metadata project

Untuk melihat metadata kustom yang berlaku untuk semua VM di project Anda, gunakan salah satu metode berikut.

Konsol

  1. Di konsol Google Cloud, buka halaman Metadata.

    Buka halaman Metadata

    Di halaman Metadata,Anda akan melihat daftar semua entri metadata project kustom untuk project Anda.

gcloud

Gunakan perintah gcloud compute project-info describe untuk mengkueri metadata project:

gcloud compute project-info describe --flatten="commonInstanceMetadata[]"

Outputnya mirip dengan hal berikut ini:

---
fingerprint: HcSFdS_1_1I=
items:
- key: ssh-keys
  value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ...
kind: compute#metadata

REST

Untuk mengkueri metadata project, buat permintaan GET ke metode project.get.

Ganti PROJECT_ID dengan project ID Anda.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID

Outputnya mirip dengan hal berikut ini:

"kind": "compute#project",
"id": "XXXXXXX",
"creationTimestamp": "2018-12-10T08:34:33.616-08:00",
"name": "YOUR_PROJECT",
"commonInstanceMetadata": {
  "kind": "compute#metadata",
  "fingerprint": "XXXXXCdg=",
  "items": [
    {
      "key": "enable-guest-attributes",
      "value": "TRUE"
    },
    {
      "key": "enable-os-inventory",
      "value": "true"
    },
    {
      "key": "enable-osconfig",
      "value": "TRUE"
    },
    {
      "key": "enable-oslogin",
      "value": "TRUE"
    },
    {
      "key": "sshKeys",
      "value": "XXXXX"
    }
  ]
}, ...

Melihat metadata zonal

Untuk melihat metadata kustom yang berlaku untuk semua instance VM di zona tertentu dalam project, gunakan salah satu metode berikut.

gcloud

Untuk mengkueri metadata zona kustom, gunakan perintah gcloud compute project-zonal-metadata describe.

gcloud compute project-zonal-metadata describe \
    --zone=ZONE \
    --project=PROJECT_ID

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zona tempat Anda ingin melihat metadata zonal.

Outputnya mirip dengan hal berikut ini:

{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
    items: {
      "key-1": "value-1",
      "key-2": "value-2"
    }
  }
}

REST

Untuk mengkueri metadata zona kustom, buat permintaan GET ke metode instanceSettings().get

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zona tempat Anda ingin melihat metadata zonal.

Outputnya mirip dengan hal berikut ini:

{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
    items: {
      "key-1": "value-1",
      "key-2": "value-2"
    }
  }
}

Melihat metadata instance

Untuk melihat metadata yang berlaku untuk satu VM di project Anda, gunakan salah satu metode berikut.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka instance VM

  2. Klik nama VM yang ingin Anda lihat metadatanya.

    • Kunci SSH untuk VM ini. Di bagian Keamanan dan akses, lihat kolom Kunci SSH.

      • Nilai None menunjukkan tidak ada kunci SSH yang disimpan di metadata instance.

      • Nilai apa pun lainnya menunjukkan bahwa ada kunci SSH yang disimpan di metadata instance.

    • Kunci SSH untuk project. Di bagian Keamanan dan akses, lihat kolom Memblokir kunci SSH di seluruh project.

      • Nilai On menunjukkan bahwa nilai kunci metadata block-project-ssh-keys adalah TRUE di metadata instance.

      • Nilai Off menunjukkan bahwa nilai kunci metadata block-project-ssh-keys adalah FALSE, atau kunci tidak ditetapkan.

    • Semua metadata kustom lainnya. Lihat bagian Metadata kustom. Anda akan melihat semua kunci dan nilai metadata kustom, selain metadata kunci SSH.

gcloud

Gunakan perintah gcloud compute instances describe untuk mengkueri metadata instance:

gcloud compute instances describe VM_NAME --flatten="metadata[]"

Ganti VM_NAME dengan nama VM yang ingin Anda cari metadatanya.

Outputnya mirip dengan hal berikut ini:

---
fingerprint: MTgTJ5m-Cjs=
items:
- key: enable-oslogin
  value: 'true'
kind: compute#metadata

REST

Untuk mengkueri metadata untuk VM tertentu, kirim permintaan GET ke metode instances.get.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Outputnya mirip dengan hal berikut ini:

......
"metadata": {
"kind": "compute#metadata",
"fingerprint": "XXXXXXVo=",
"items": [
  {
    "key": "enable-oslogin",
    "value": "true"
  }
]
},....

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • ZONE: zona tempat VM berada
  • VM_NAME: nama VM

Langkah berikutnya