Google Cloud Platform 提供了一個中繼資料伺服器,該伺服器知道 App Engine 執行個體的詳情,例如包含專案 ID、服務帳戶,以及服務帳戶使用的憑證。您可使用簡單的 HTTP 要求存取此資料:不需要用戶端程式庫。
此頁面說明如何透過相對應的中繼資料伺服器端點進行 HTTP 呼叫,從已部署的 Java 8 執行階段應用程式存取執行個體中繼資料。
使用這個 API 的其中一個實用方法,就是取得服務帳戶權杖,並在某個 Google Cloud API 的授權標頭中,以權杖形式提供該權杖,以便向該特定 API 服務驗證應用程式。如需這些權杖權杖的使用方式範例,請參閱 Google Cloud Translation API 說明文件。
辨識要使用的中繼資料端點
下表列出可讓您針對特定中繼資料發出 HTTP 要求的端點:中繼資料伺服器位於 http://metadata.google.internal
。
中繼資料端點 | 說明 |
---|---|
/computeMetadata/v1/project/numeric-project-id |
指派給專案的專案編號。 |
/computeMetadata/v1/project/project-id |
指派給專案的專案 ID。 |
/computeMetadata/v1/instance/zone |
執行個體執行的區域。 |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
指派給專案的預設服務帳戶電子郵件。 |
/computeMetadata/v1/instance/service-accounts/default/ |
列出專案的所有預設服務帳戶。 |
/computeMetadata/v1/instance/service-accounts/default/scopes |
列出預設服務帳戶的所有支援範圍。 |
/computeMetadata/v1/instance/service-accounts/default/token |
傳回可用來向其他 Google Cloud API 驗證應用程式的驗證憑證。 |
例如,如要擷取專案 ID,請將要求傳送至 http://metadata.google.internal/computeMetadata/v1/project/project-id
。
發出中繼資料要求
以下的範例程式碼會取得並顯示執行個體可用的中繼資料,但服務帳戶憑證例外。
在範例程式碼中,請注意檢查確保應用程式在生產環境中執行。若應用程式在本機執行,則不會從要求中傳回任何中繼資料。
另外,請謹慎使用 Google Gson JSON 序列化 / 反序列化 OkHttp HTTP 和 HTTP2 用戶端,以及 Thymeleaf 範本系統。這些程序並非必須,但對您的專案有所幫助。
在本機執行
中繼資料伺服器可用於已部署的應用程式:不支援在開發伺服器上的本機執行。如上述範例程式碼所示,您可以在程式碼中新增環境檢查機制,確保只有在實際工作環境中運作的應用程式才能產生中繼資料結果:
String environment =
(String) System.getProperties().get("com.google.appengine.runtime.environment");
ctx.setVariable("production", environment);
// The metadata server is only on a production system
if (environment.equals("Production")) {
... //show metadata results
}