檢視及查詢 VM 中繼資料

每部虛擬機器 (VM) 都會將中繼資料儲存在中繼資料伺服器的目錄中。您的 VM 可自動存取這個中繼資料伺服器 API,而無需其他任何授權。您可以使用本文件下列各節說明的方法,查看及查詢 VM 中繼資料值:

如果存取中繼資料伺服器時發生錯誤,請參閱「排解中繼資料伺服器存取問題」。

事前準備

  • 如為 Windows Server VM,請使用 PowerShell 3.0 以上版本。建議使用 ctrl+v 貼上複製的程式碼區塊。
  • 瞭解如何定義、分類及排列 Compute Engine 的 VM 中繼資料。詳情請參閱「關於 VM 中繼資料」。
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Trusted Cloud by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:

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

    Console

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

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.

    Python

    如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

      安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI

      Create local authentication credentials for your user account:

      gcloud auth application-default login

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    詳情請參閱 Set up authentication for a local development environment

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI

    詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

如要使用 Trusted Cloud 控制台、Google Cloud CLI 或 REST 從 VM 外部查看自訂中繼資料,需要下列角色和權限。如果您是透過程式輔助方式從 VM 查詢中繼資料,則只需要連線至 VM 的角色和權限。

如要取得從 VM 外部查看自訂中繼資料所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色包含從 VM 外部查看自訂中繼資料所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要從 VM 外部查看自訂中繼資料,必須具備下列權限:

  • 如要查看自訂專案中繼資料: compute.projects.get 在專案上
  • 如要查看自訂可用區中繼資料,請在專案中所需可用區的執行個體設定中, compute.instanceSettings.get
  • 如要查看 VM 執行個體的自訂中繼資料: compute.instances.get 在 VM 上
  • 如果 VM 使用服務帳戶: iam.serviceAccounts.actAs 服務帳戶或專案

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

以程式輔助方式查詢中繼資料

您可以從 Linux 或 Windows VM 內,以程式輔助方式查詢中繼資料值項目,存取所有中繼資料。在 VM 中,您可以使用 Linux 上的 curl 或 Windows 上的 Invoke-RestMethod 等工具,透過下列其中一種方式,以程式輔助方式查詢中繼資料值:

中繼資料伺服器端點

如要以程式輔助方式查詢中繼資料,請在 VM 中使用下列中繼資料伺服器端點:

  • 對於所有 VM,您可以使用 HTTP 端點 (http://metadata.google.internal/computeMetadata/v1) 或 IP 位址 (169.254.169.254) 查詢中繼資料伺服器。即使是僅支援 IPv6 的執行個體 (搶先版),也請使用 IPv4 位址。
  • 如果是受防護 VM,可以使用下列任一方式查詢中繼資料伺服器:

本文中的大多數範例都使用 http 端點。不過,無論使用 https 或 http 端點,您都可以存取所有相同的中繼資料項目。

中繼資料要求的組成部分

下表摘要說明中繼資料查詢要求的主要部分。

元件 說明
根網址

所有中繼資料值都會定義為下列根網址下的子路徑:

  • http 端點
    • http://metadata.google.internal/computeMetadata/v1
    • http://169.254.169.254/computeMetadata/v1
    • http://metadata.goog/computeMetadata/v1
  • HTTPS 端點 (預覽版)
    • https://metadata.google.internal/computeMetadata/v1
      預先發布階段僅支援這個網址。
要求標頭

此標頭指示是在擷取中繼資料值的意圖之下傳送要求,而非隨意從不安全的來源傳送,並允許中繼資料伺服器傳回您要求的資料。如果您不提供此標頭,中繼資料伺服器會拒絕您的要求。

Metadata-Flavor: Google

查詢單一中繼資料項目

使用下列指令查詢單一中繼資料項目。

Linux

  1. 連線至 Linux VM。
  2. 在 Linux VM 中,使用 curl 工具進行查詢。如要查詢 VM 執行個體或專案中繼資料項目,請執行下列指令:

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

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    舉例來說,如要查詢 VM 的開機映像檔,請執行下列查詢:

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

    輸出結果會與下列內容相似:

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

Windows

  1. 連線至 Windows VM。
  2. 在 Windows VM 中,使用 Invoke-RestMethod 指令進行查詢。如要查詢 VM 執行個體或專案中繼資料項目,請執行下列指令:

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

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    舉例來說,如要查詢 VM 的開機映像檔,請執行下列查詢:

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

    輸出結果會與下列內容相似:

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

查詢中繼資料目錄清單

使用下列指令查詢中繼資料目錄清單。目錄清單是包含其他中繼資料鍵的中繼資料項目。任何以斜線結尾的中繼資料項目都是目錄清單

Linux

  1. 連線至 Linux VM。

  2. 如要查詢 VM 執行個體或專案中繼資料目錄,請從 Linux VM 執行下列指令:

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

    請將 PATH_TO_METADATA_DIRECTORY 替換為要以遞迴方式查詢目錄的 VM 執行個體或專案中繼資料目錄路徑。例如:

    • 如要查看 attributes 專案中繼資料目錄項目,要指定的路徑為 project/attributes/
    • 如要查看 disks VM 執行個體中繼資料目錄項目,請指定 instance/disks/ 路徑。

    舉例來說,disks/ 項目就是附加至 VM 的磁碟目錄。如要查詢 disks/ 項目,請完成下列步驟:

    1. 在磁碟目錄中執行 curl 工具指令。

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

      輸出結果會與下列內容相似:

      0/
      1/
      2/
      
    2. 如要進一步瞭解磁碟 0/ 目錄,可以查詢該目錄的特定網址:

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

      輸出結果會與下列內容相似:

      device-name
      index
      mode
      type
      
    3. 接著,如要查詢磁碟 0/ 的磁碟類型 (type),可以執行下列指令:

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

      輸出結果會與下列內容相似:

      PERSISTENT
      

Windows

disks/ 項目是附加至 VM 的磁碟目錄。如要查詢磁碟項目,請完成下列步驟:

  1. 連線至 Windows VM。

  2. 如要查詢 VM 執行個體或專案中繼資料目錄,請從 Windows VM 執行下列指令:

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

    請將 PATH_TO_METADATA_DIRECTORY 替換為要以遞迴方式查詢目錄的 VM 執行個體或專案中繼資料目錄路徑。例如:

    • 如要查看 attributes 專案中繼資料目錄項目,要指定的路徑為 project/attributes/
    • 如要查看 disks VM 執行個體中繼資料目錄項目,請指定 instance/disks/ 路徑。

    舉例來說,disks/ 項目就是附加至 VM 的磁碟目錄。如要查詢 disks/ 項目,請完成下列步驟:

    1. 在磁碟目錄中使用 Invoke-RestMethod 指令

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

      輸出結果會與下列內容相似:

      0/
      1/
      2/
      
    2. 如要進一步瞭解磁碟 0/ 目錄,可以查詢該目錄的特定網址:

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

      輸出結果會與下列內容相似:

      device-name
      index
      mode
      type
      
    3. 接著,如要查詢磁碟 0/ 的磁碟類型 (type),可以執行下列指令:

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

      輸出結果會與下列內容相似:

      PERSISTENT
      

以遞迴方式查詢目錄清單

如要傳回目錄下的所有內容,請在要求中使用 recursive=true 查詢參數:

Linux

  1. 連線至 Linux VM。

  2. 在 Linux VM 中,使用 curl 工具進行查詢。如要遞迴查詢 VM 執行個體或專案中繼資料目錄的清單,請執行下列指令:

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

    請將 PATH_TO_METADATA_DIRECTORY 替換為要以遞迴方式查詢目錄的 VM 執行個體或專案中繼資料目錄路徑。例如:

    • 如要查看 attributes 專案中繼資料目錄項目,要指定的路徑為 project/attributes/
    • 如要查看 disks VM 執行個體中繼資料目錄項目,請指定 instance/disks/ 路徑。

    舉例來說,下列指令會遞迴查詢 disks/ 目錄的執行個體中繼資料清單。

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

    輸出結果會與下列內容相似:

      [{"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"}]
      

    遞迴內容預設會以 JSON 格式傳回。如果您想傳回文字格式中的這些內容,請加上 alt=text 查詢參數:

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

    輸出結果會與下列內容相似:

      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. 連線至 Windows VM。

  2. 在 Windows VM 中,使用 Invoke-RestMethod 指令進行查詢。如要遞迴查詢 VM 執行個體或專案中繼資料目錄的清單,請執行下列指令:

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

    請將 PATH_TO_METADATA_DIRECTORY 替換為要以遞迴方式查詢目錄的 VM 執行個體或專案中繼資料目錄路徑。例如:

    • 如要查看 attributes 專案中繼資料目錄項目,要指定的路徑為 project/attributes/
    • 如要查看 disks VM 執行個體中繼資料目錄項目,請指定 instance/disks/ 路徑。

    舉例來說,下列指令會遞迴查詢 disks/ 目錄的執行個體中繼資料清單。

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

    輸出結果會與下列內容相似:

    [{"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"}]
    

    遞迴內容預設會以 JSON 格式傳回。如果您想傳回文字格式中的這些內容,請加上 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
    

    輸出結果會與下列內容相似:

    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
    

設定查詢輸出內容格式

每個端點都預設有回應的預先定義格式。某些端點可能會預設傳回 JSON 格式的資料,而其他端點則可能會將資料傳回為字串。您可以使用 alt=jsonalt=text 查詢參數覆寫預設資料格式規格,這兩個參數分別會傳回 JSON 字串格式的資料,或傳回為純文字表示。

Linux

  1. 連線至 Linux VM。
  2. 在 Linux VM 中,使用 curl 工具進行查詢。如要變更 VM 執行個體或專案中繼資料項目的查詢回應資料格式,請執行下列指令:

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

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • DATA_FORMAT:您希望查詢回應資料採用的格式,例如 textjson

範例

例如,tags會以 JSON 格式自動傳回資料。您可以指定 alt=text 查詢參數,改為傳回文字格式的資料。

預設查詢

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

輸出結果會與下列內容相似:

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

查詢時套用格式

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

輸出結果會與下列內容相似:

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

Windows

  1. 連線至 Windows VM。
  2. 在 Windows VM 中,使用 Invoke-RestMethod 指令進行查詢。如要變更 VM 執行個體或專案中繼資料項目的查詢回應資料格式,請執行下列指令:

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

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • DATA_FORMAT:您希望查詢回應資料採用的格式,例如 textjson

範例

例如,tags會以 JSON 格式自動傳回資料。您可以指定 alt=text 查詢參數,改為傳回文字格式的資料。

預設查詢

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

輸出結果會與下列內容相似:

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

查詢時套用格式

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

輸出結果會與下列內容相似:

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

使用 wait-for-change 功能查詢中繼資料變更

鑑於中繼資料值可在 VM 執行中時變更,中繼資料伺服器可讓您使用 wait-for-change 功能收到中繼資料變更通知。使用這個選項時,只有在指定的中繼資料變更時,要求才會傳回輸出內容。

您可以對自訂中繼資料或伺服器定義的中繼資料使用此功能,以便當您的 VM 或專案發生任何變更,或者有人更新自訂中繼資料項目時,您就可以透過程式方式對變更做出反應。

例如,您可以對 tags 鍵執行要求,如此就只會在標記中繼資料的內容變更時才傳回要求。要求傳回時,會提供該中繼資料鍵的新值。

wait-for-change 功能也可讓您與要求比對,以及設定逾時

使用 wait-for-change 功能時,請注意以下事項:

  • 您可對中繼資料端點,或以遞迴方式對目錄的內容執行 wait-for-change 要求。您無法對目錄清單執行 wait-for-change 要求。如果您嘗試這樣做,中繼資料伺服器會拒絕您的要求,並傳回 400 Invalid Request 錯誤。

  • 您無法對服務帳戶憑證執行 wait-for-change 要求。如果您嘗試對服務帳戶憑證網址提出 wait-for-change 要求,要求會立即失敗,並傳回 400 Invalid Request 錯誤。

如要執行 wait-for-change 要求,請查詢中繼資料鍵並附加 ?wait_for_change=true 查詢參數:

Linux

  1. 連線至 Linux VM。
  2. 在 Linux VM 中,使用 curl 工具進行查詢。如要對 VM 執行個體或專案中繼資料項目執行 wait-for-change 要求,請執行下列指令:

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

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    對指定中繼資料鍵進行變更之後,查詢會傳回新值。

範例

在本例中,如果對 setInstanceTags method 提出要求,要求會傳回新值:

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

輸出結果會與下列內容相似:

  http-server
  db-client
  

您也可以對目錄內容以遞迴方式執行 wait-for-change 要求:

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

如果發生任何變更,中繼資料伺服器會傳回新內容:

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

Windows

  1. 連線至 Windows VM。
  2. 在 Windows VM 中,使用 Invoke-RestMethod 指令進行查詢。如要對 VM 執行個體或專案中繼資料項目執行 wait-for-change 要求,請執行下列指令:

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

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    對指定中繼資料鍵進行變更之後,查詢會傳回新值。

範例

對指定中繼資料鍵進行變更之後,查詢會傳回新值。在本例中,如果向 setInstanceTags method 發出要求,要求會傳回新值:

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

輸出結果會與下列內容相似:

  http-server
  db-client
  

您也可以對目錄的內容以遞迴方式執行 wait-for-change 要求:

  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
  

如果發生任何變更,中繼資料伺服器會傳回新內容:

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

使用 ETag

當您提交 wait-for-change 查詢時,如果在中繼資料內容中發生任何變更,中繼資料伺服器就會傳回回應。但是,在中繼資料更新與 wait-for-change 要求之間發出了繼承競爭狀況,所以找到一種可靠的方法來知道您正在取得最新的中繼資料值很有幫助。

為了達成此目標,您可以使用 last_etag 查詢參數,它會將您提供的 ETag 值與儲存在中繼資料伺服器中的 ETag 值進行比較。如果 ETag 值相符,則會接受 wait-for-change 要求。如果 ETag 值不相符,就表示自您上次擷取 ETag 值之後,中繼資料的內容已經變更,而中繼資料伺服器會立即傳回這個最新的值。

Linux VM

如要取得中繼資料鍵的目前 ETag 值,請完成下列步驟:

  1. 連線至 Linux VM。
  2. 向該鍵提出要求,並輸出標頭。如要執行這項操作,請使用加上 -v 標記的 curl 工具。如要取得 VM 執行個體或專案中繼資料項目的目前 ETag,請執行下列指令:

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

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    舉例來說,下列指令會取得 tags 執行個體中繼資料鍵的目前 ETag 值。

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

    輸出結果會與下列內容相似:

    * 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. 然後您可以在 wait-for-change 要求中使用該 ETag 值和 curl 工具指令。如要將 ETag 值用於執行個體或專案中繼資料的 wait-for-change 要求,請執行下列指令:

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

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • ETAG:中繼資料鍵的 ETag 值。

    在本範例中,下列指令會使用 tags 鍵的 ETag 值,並查詢執行個體中繼資料項目。

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

    中繼資料伺服器將會比對您指定的 ETag 值,如果該值變更,要求會傳回您中繼資料鍵的新內容。

Windows VM

如要取得中繼資料鍵的目前 ETag 值,請完成下列步驟:

  1. 連線至 Windows VM。
  2. 向該鍵提出要求,並輸出標頭。在 Windows 上,使用 Invoke-WebRequest 指令。如要取得 VM 執行個體或專案中繼資料項目的目前 ETag,請執行下列指令:

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

    $value.Headers.ETag

    PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

    • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
    • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
    • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    舉例來說,下列指令會取得 tags 執行個體中繼資料鍵的目前 ETag 值。

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

    $value.Headers.ETag

    輸出結果會與下列內容相似:

      * 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. 然後您可在 wait-for-change 要求中使用該 ETag 值。如要將 ETag 值用於執行個體或專案中繼資料的 wait-for-change 要求,請執行下列指令:

      $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
      

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • ETAG:中繼資料鍵的 ETag 值。

    在本範例中,下列指令會使用 tags 鍵的 ETag 值,並查詢執行個體中繼資料項目。

      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
      

    中繼資料伺服器將會比對您指定的 ETag 值,如果該值變更,要求會傳回您中繼資料鍵的新內容。

Python

以下 Python 範例顯示如何以程式化的方式觀察中繼資料伺服器的變更。

這個範例將初始 ETag 設定為 0。中繼資料伺服器不會傳回以 0 做為 ETag 值的回應。在要求中將 0 指定為最後一個 ETag 時,中繼資料伺服器將會以目前值與 ETag 回應。這樣可以省去一點取得初始值和 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"]

設定逾時

如果您希望 wait-for-change 要求在一定秒數後逾時,可以設定 timeout_sec 參數。timeout_sec 參數會將您要求的等待時間限制於您指定的秒數,而當要求達到該限制時,就會傳回中繼資料鍵的目前內容。

當您設定 timeout_sec 參數時,無論中繼資料值是否已實際發生變更,要求都一律會在指定秒數之後傳回。您只能為逾時設定整數值。

Linux

  1. 連線至 Linux VM。
  2. 在 Linux VM 中,使用 curl 工具進行查詢。如要對 VM 執行個體或專案中繼資料項目執行 wait-for-change 要求,並設定逾時值,請執行下列指令:

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

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • TIMEOUT:逾時值。

舉例來說,下列指令會執行 wait-for-change 要求,並將逾時時間設為 360 秒:

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

Windows

  1. 連線至 Windows VM。
  2. 在 Windows VM 中,使用 Invoke-RestMethod 指令進行查詢。如要對 VM 執行個體或專案中繼資料項目執行 wait-for-change 要求並設定逾時值,請執行下列指令:

      $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
      

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • TIMEOUT:逾時值。

舉例來說,下列指令會執行 wait-for-change 要求,並將逾時時間設為 360 秒:

  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
  

使用 HTTPS 中繼資料伺服器端點查詢中繼資料

HTTPS 中繼資料伺服器端點 (https://metadata.google.internal/computeMetadata/v1) 可為中繼資料伺服器與 VM 之間的資訊傳輸提供額外安全保障。

如要使用 HTTPS 中繼資料伺服器端點,虛擬機器必須符合下列需求:

  • 訪客環境必須在 VM 上執行
  • VM 的 disable-https-mds-setup 中繼資料鍵必須設為 FALSE
  • VM 必須是 Shielded VM。這是因為 HTTPS 中繼資料伺服器需要使用統一可延伸韌體介面 (UEFI) 和虛擬信任平台模組 (vTPM) 驗證憑證。

如要瞭解如何處理 HTTPS 中繼資料伺服器端點的查詢,請參閱「HTTPS 中繼資料伺服器端點」。無論使用 https 或 http 端點,您都可以對中繼資料伺服器執行所有相同的查詢。不過,如要呼叫 https 端點,您必須指定用戶端身分識別憑證的路徑,有時也需要指定根憑證。

下列指令示範如何使用 https 端點查詢中繼資料伺服器。

Linux

  1. 連線至 Linux VM。

  2. 在 Linux VM 中,使用 curl 工具發出查詢,並指定用戶端身分識別憑證。您也可以選擇指定根憑證。

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

    更改下列內容:

    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin
    • CLIENT_CERTIFICATE:用戶端身分識別憑證的路徑:/run/google-mds-mtls/client.key
    • 選用:ROOT_CERTIFICATE:根憑證的路徑:/run/google-mds-mtls/root.crt。如果根憑證未新增至 OS 信任存放區,您就必須指定這個值。

    舉例來說,如要查詢 VM 的開機映像檔,請執行下列查詢:

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

    輸出結果會與下列內容相似:

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

    如果看到錯誤訊息,請參閱疑難排解說明文件

Windows

  1. 連線至 Windows VM。

  2. 使用下列任一指令取得用戶端身分識別憑證

    • $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. 在 Windows VM 中,使用 Invoke-RestMethod 指令並指定用戶端身分識別憑證,即可進行查詢。

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

    更改下列內容:

    • CLIENT_CERTIFICATE:VM 上的用戶端身分識別憑證路徑。這是上一步中設定的 $cert 變數。
    • PATH_TO_METADATA_ENTRY 替換為要查詢值的 VM 執行個體或專案中繼資料鍵的路徑。如果金鑰位於執行個體或專案目錄的子目錄中,請務必一併加入子目錄。例如:

      • 如要查看儲存在專案中繼資料中的 project-id 中繼資料鍵,請指定 project/project-id
      • 如要查看儲存在 VM 執行個體中繼資料中的 image 中繼資料鍵,請指定 instance/image
      • 如要查看可儲存在專案或 VM 執行個體中繼資料屬性子目錄中的 enable-oslogin,請視您的用途指定 project/attributes/enable-oslogininstance/attributes/enable-oslogin

    舉例來說,如要查詢 Windows Server 2019 VM 的開機映像檔,請執行下列查詢:

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

    輸出結果會與下列內容相似:

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

限制

  • 中繼資料伺服器會自動拒絕包含 X-Forwarded-For 標頭的任何要求。此標頭一般指示要求經由 Proxy 傳送,可能不是由授權使用者提出的要求。基於安全性考量,將一律拒絕這類要求。

  • 請注意,使用 curl 指令從伺服器擷取中繼資料時,要求路徑不支援部分編碼字元。編碼字元僅在查詢路徑受到支援。

    舉例來說,下列要求可能無法運作:

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

    若要執行此要求,您必須將要求路徑 (%40) 中不支援的編碼字元替換為相等的可接受值 (@)。

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

    下表大致列出要求路徑中不支援的編碼字元。

    編碼字元 可接受的值
    %21
    !
    %24
    $
    %27
    '
    %28
    (
    %29
    )
    %2A
    *
    %2C
    ,
    %40
    @

狀態碼

向中繼資料伺服器提出要求時,中繼資料伺服器會傳回標準 HTTP 狀態碼,指出要求是否成功。有時,網路狀況或主機事件可能會導致中繼資料伺服器無法處理要求,並傳回錯誤碼。在這種情況下,您應將應用程式設計成能夠容錯,並且能夠辨識及處理這些錯誤。

如需可傳回的狀態碼詳細清單,請參閱「排解伺服器代碼問題」。

查看 VM 的自訂中繼資料

您可以透過下列任一方式,查看 Compute Engine VM 的自訂中繼資料值:

查看專案中繼資料

如要查看適用於專案中所有 VM 的自訂中繼資料,請使用下列其中一種方法。

主控台

  1. 前往 Trusted Cloud 控制台的「Metadata」頁面。

    前往「Metadata」(中繼資料) 頁面

    在「Metadata」(中繼資料) 頁面中,您會看到專案的所有自訂專案中繼資料項目清單。

gcloud

使用 gcloud compute project-info describe 指令查詢專案中繼資料:

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

輸出結果會與下列內容相似:

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

REST

如要查詢專案中繼資料,請對 project.get 方法建立 GET 要求。

PROJECT_ID 替換為您的專案 ID。

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID

輸出結果會與下列內容相似:

"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"
    }
  ]
}, ...

查看可用區中繼資料

如要查看套用至專案中特定可用區內所有 VM 執行個體的自訂中繼資料,請使用下列其中一種方法。

gcloud

如要查詢自訂區域中繼資料,請使用 gcloud compute project-zonal-metadata describe 指令

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

更改下列內容:

  • PROJECT_ID:您的專案 ID
  • ZONE:您要查看區域中繼資料的區域。

輸出結果會與下列內容相似:

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

REST

如要查詢自訂區域中繼資料,請對 instanceSettings().get 方法發出 GET 要求。

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings

更改下列內容:

  • PROJECT_ID:您的專案 ID
  • ZONE:您要查看區域中繼資料的區域。

輸出結果會與下列內容相似:

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

查看執行個體中繼資料

如要查看專案中適用於單一 VM 的中繼資料,請使用下列其中一種方法。

主控台

  1. 前往 Trusted Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下要查看中繼資料的 VM 名稱。

    • 這個 VM 的 SSH 金鑰。在「安全性與存取權」部分中,查看「SSH 金鑰」欄位。

      • 如果值為 None,表示執行個體中繼資料未儲存任何安全殼層金鑰。

      • 如果傳送的是任何其他值,則代表執行個體中繼資料儲存了 SSH 金鑰。

    • 專案的安全殼層金鑰。在「安全性與存取權」專區中,查看「封鎖全專案安全殼層金鑰」欄位。

      • 值為 On 表示中繼資料鍵 block-project-ssh-keys 的值為執行個體中繼資料中的 TRUE

      • 值為 Off 表示中繼資料鍵 block-project-ssh-keys 的值為 FALSE,或未設定該鍵。

    • 所有其他自訂中繼資料。查看「Custom metadata」(自訂中繼資料) 區段。您會看到所有自訂中繼資料鍵和值,但 SSH 金鑰中繼資料除外。

gcloud

使用 gcloud compute instances describe 指令查詢執行個體中繼資料:

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

VM_NAME 替換為要尋找中繼資料的 VM 名稱。

輸出結果會與下列內容相似:

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

REST

如要查詢特定 VM 的中繼資料,請對 instances.get 方法傳送 GET 要求。

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

輸出結果會與下列內容相似:

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

更改下列內容:

  • PROJECT_ID:您的專案 ID
  • ZONE:VM 所在的可用區
  • VM_NAME:VM 名稱

後續步驟