Google Cloud Platform fournit un serveur de métadonnées qui connaît des informations détaillées sur votre instance App Engine, telles que son identifiant de projet contenant, les comptes de service et les jetons utilisés par les comptes de service. Vous pouvez accéder à ces données à l'aide de simples requêtes HTTP : aucune bibliothèque cliente n'est requise.
Cette page explique comment accéder aux métadonnées d'instance de votre application d'exécution Java 8 déployée en effectuant des appels HTTP aux points de terminaison du serveur de métadonnées approprié.
Vous pouvez, par exemple, obtenir le jeton du compte de service et le fournir en tant que jeton de support dans l'en-tête Authorization de l'une des API Google Cloud, afin d'authentifier votre application auprès de ce service API particulier. Il s'agit là de l'une des nombreuses applications utiles de cette API. Consultez la documentation de l'API Google Cloud Translation pour obtenir un exemple d'utilisation de ces jetons de support.
Identifier le point de terminaison des métadonnées à utiliser
Le tableau suivant répertorie les points de terminaison où vous pouvez effectuer des demandes HTTP pour des métadonnées spécifiques. Le serveur de métadonnées est accessible à l'adresse http://metadata.google.internal
.
Point de terminaison des métadonnées | Description |
---|---|
/computeMetadata/v1/project/numeric-project-id |
Numéro de projet attribué à votre projet. |
/computeMetadata/v1/project/project-id |
ID de projet attribué à votre projet. |
/computeMetadata/v1/instance/zone |
Zone dans laquelle l'instance est en cours d'exécution. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
Adresse e-mail du compte de service par défaut attribué à votre projet. |
/computeMetadata/v1/instance/service-accounts/default/ |
Répertorie tous les comptes de service par défaut pour votre projet. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Répertorie tous les champs d'application disponibles pour les comptes de service par défaut. |
/computeMetadata/v1/instance/service-accounts/default/token |
Renvoie le jeton d'authentification pouvant servir à authentifier votre application auprès d'autres API Google Cloud. |
Par exemple, pour récupérer votre ID de projet, envoyez une requête à http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Effectuer des demandes de métadonnées
L'exemple de code suivant récupère et affiche toutes les métadonnées disponibles pour l'instance, à l'exception du jeton du compte de service.
Dans l'exemple de code, notez la vérification visant à vérifier que l'application est exécutée en production. Si l'application s'exécute localement, les demandes ne renverront aucune métadonnée.
Notez également l'utilisation du sérialiseur/désérialiseur Google Gson JSON, du client OkHttp HTTP et HTTP2, et du système de modélisation Thymeleaf. Ceux-ci ne sont pas obligatoires, mais ce sont des bibliothèques utiles pour vos propres projets.
Exécution locale
Le serveur de métadonnées est disponible pour les applications déployées. L'exécution en local sur le serveur de développement n'est pas prise en charge. Vous pouvez ajouter une vérification de l'environnement à votre code pour ne générer des résultats de métadonnées que si l'application est exécutée en production, comme illustré dans l'exemple de code fourni ci-dessus :
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
}