Die Google Cloud Platform stellt einen Metadatenserver bereit, der Details zu Ihrer App Engine-Instanz enthält, z. B. die Projekt-ID, Dienstkonten sowie Tokens, die von den Dienstkonten verwendet werden. Sie können auf diese Daten mithilfe einfacher HTTP-Requests zugreifen. Es sind keine Clientbibliotheken erforderlich.
Auf dieser Seite erfahren Sie, wie Sie von der implementierten Java 8-Laufzeitanwendung auf Instanzmetadaten zugreifen können, indem Sie HTTP-Aufrufe an die entsprechenden Metadatenserver-Endpunkte senden.
Eine nützliche Methode zur Verwendung dieser API besteht darin, das Dienstkonto-Token abzurufen und als Inhabertoken im Autorisierungsheader einer der Google Cloud APIs bereitzustellen, um Ihre Anwendung für diesen konkreten API-Dienst zu authentifizieren. In der Dokumentation zur Google Cloud Translation API finden Sie ein Beispiel für die Verwendung dieser Inhabertokens.
Zu verwendenden Metadaten-Endpunkt bestimmen
In der folgenden Tabelle sind die Endpunkte aufgeführt, an die Sie HTTP-Anfragen für bestimmte Metadaten senden können: Auf den Metadatenserver kann unter http://metadata.google.internal
zugegriffen werden.
Metadatenendpunkt | Beschreibung |
---|---|
/computeMetadata/v1/project/numeric-project-id |
Projektnummer, die Ihrem Projekt zugewiesen ist. |
/computeMetadata/v1/project/project-id |
Projekt-ID, die Ihrem Projekt zugewiesen ist. |
/computeMetadata/v1/instance/zone |
Zone, in der die Instanz ausgeführt wird. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
E-Mail-Adresse des Standarddienstkontos, die Ihrem Projekt zugewiesen ist. |
/computeMetadata/v1/instance/service-accounts/default/ |
Listet alle Standarddienstkonten für Ihr Projekt auf. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Listet alle unterstützten Bereiche für die Standarddienstkonten auf. |
/computeMetadata/v1/instance/service-accounts/default/token |
Gibt das Authentifizierungstoken zurück, mit dem Ihre Anwendung gegenüber anderen Google Cloud APIs authentifiziert werden kann. |
Wenn Sie z. B. Ihre Projekt-ID abrufen möchten, senden Sie eine Anfrage an http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Metadatenanfragen erstellen
Durch den folgenden Beispielcode werden mit Ausnahme des Dienstkontotokens alle für die Instanz verfügbaren Metadaten abgerufen und angezeigt.
Beachten Sie, dass im Beispielcode geprüft wird, ob die Anwendung in der Produktion ausgeführt wird. Wenn die Anwendung lokal ausgeführt wird, werden bei den Anfragen keine Metadaten zurückgegeben.
Beachten Sie auch die Verwendung des Google-Gson-JSON-Serialisierers/-Deserialisierers, der OkHttp-HTTP- und -HTTP2-Clients und des Thymeleaf-Vorlagensystems. Diese sind zwar nicht erforderlich, aber es sind nützliche Bibliotheken für Ihre eigenen Projekte.
Lokal ausführen
Der Metadatenserver ist für bereitgestellte Anwendungen verfügbar. Die lokale Ausführung auf dem Entwicklungsserver wird nicht unterstützt. Sie können in Ihren Code eine Umgebungsprüfung einfügen, damit Metadatenergebnisse nur dann erwartet werden, wenn die Anwendung in der Produktion ausgeführt wird, wie im obigen Beispielcode gezeigt:
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
}