Google Cloud Platform proporciona una servidor de metadatos que conoce detalles acerca de tu instancia de App Engine, como el ID del proyecto al que pertenece, cuentas de servicio y los tokens usados por las cuentas de servicio. Puedes acceder a estos datos a través de solicitudes HTTP simples: no se requieren bibliotecas de cliente.
Esta página muestra cómo acceder a metadatos de instancia desde tu aplicación de entorno de ejecución de Java 8 implementada a través de llamadas HTTP a los extremos del servidor de metadatos adecuados.
Una forma muy útil de usar esta API es obtener el token de la cuenta de servicio y proporcionarlo como un token del portador en el encabezado de Autorización de una de las API de Google Cloud, para autenticar tu aplicación en ese servicio de API particular. Consulta la documentación de la API de Google Cloud Translation para ver un ejemplo de cómo se usan estos tokens del portador.
Identificar qué extremo de metadatos usar
En la tabla siguiente, se enumeran los extremos en los que puedes realizar solicitudes HTTP para metadatos específicos. Se puede acceder al servidor de metadatos en http://metadata.google.internal
.
Extremo de metadatos | Descripción |
---|---|
/computeMetadata/v1/project/numeric-project-id |
El número de proyecto asignado a tu proyecto. |
/computeMetadata/v1/project/project-id |
El ID del proyecto asignado a tu proyecto. |
/computeMetadata/v1/instance/zone |
La zona en la que se está ejecutando la instancia. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
El correo electrónico de la cuenta de servicio predeterminada asignado a tu proyecto. |
/computeMetadata/v1/instance/service-accounts/default/ |
Enumera todas las cuentas de servicio predeterminadas para tu proyecto. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Enumera todos los alcances compatibles para las cuentas de servicio predeterminadas. |
/computeMetadata/v1/instance/service-accounts/default/token |
Muestra el token de autenticación que puede usarse para autenticar tu aplicación en otras APIs de Google Cloud. |
Por ejemplo, para recuperar tu ID del proyecto, envía una solicitud a http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Realizar solicitudes de metadatos
El código de muestra siguiente obtiene todos los metadatos disponibles para la instancia y los muestra, excepto para el token de la cuenta de servicio.
En el código de muestra, observa la marca para asegurarte de que la aplicación se está ejecutando en producción. Si la aplicación se está ejecutando localmente, no se mostrarán metadatos de las solicitudes.
Además, observa el uso del serializador/deserializador JSON de Google Gson, el cliente HTTP y HTTP2 de OkHttp, y el sistema de plantillas Thymeleaf. Estos no son necesarios, pero son bibliotecas muy útiles para tus propios proyectos.
Ejecución local
El servidor de metadatos está disponible para aplicaciones implementadas: no se admite la ejecución local en el servidor de desarrollo. Puedes agregar una marca de entorno a tu código para esperar resultados de metadatos, solo si la app se está ejecutando en producción, como se muestra en el código de muestra que se proporciona arriba:
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
}