Google Cloud Platform fornisce un server di metadati che conosce i dettagli della tua istanza App Engine, come l'ID progetto contenitore, i service account e i token utilizzati dai service account. Puoi accedere a questi dati utilizzando semplici richieste HTTP: non sono necessarie librerie client.
Questa pagina mostra come accedere ai metadati dell'istanza dall'applicazione runtime Java 8 di cui è stato eseguito il deployment effettuando chiamate HTTP agli endpoint del server di metadati appropriati.
Un modo utile per utilizzare questa API è ottenere il token del account di servizio e fornirlo come token di autenticazione nell'intestazione Authorization di una delle API Google Cloud, per autenticare l'applicazione al servizio API specifico. Consulta la documentazione dell'API Google Cloud Translation per un esempio di come vengono utilizzati questi token di autenticazione.
Identificare l'endpoint dei metadati da utilizzare
La tabella seguente elenca gli endpoint in cui puoi effettuare richieste HTTP per
metadati specifici. Il server di metadati è accessibile all'indirizzo
http://metadata.google.internal
.
Endpoint dei metadati | Descrizione |
---|---|
/computeMetadata/v1/project/numeric-project-id |
Il numero di progetto assegnato al tuo progetto. |
/computeMetadata/v1/project/project-id |
L'ID progetto assegnato al tuo progetto. |
/computeMetadata/v1/instance/zone |
La zona in cui è in esecuzione l'istanza. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
L'email del account di servizio predefinito assegnato al tuo progetto. |
/computeMetadata/v1/instance/service-accounts/default/ |
Elenca tutti i service account predefiniti per il tuo progetto. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Elenca tutti gli ambiti supportati per i service account predefiniti. |
/computeMetadata/v1/instance/service-accounts/default/token |
Restituisce il token di autenticazione che può essere utilizzato per autenticare l'applicazione con altre API Google Cloud. |
Ad esempio, per recuperare l'ID progetto, invia una richiesta a
http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Esecuzione di richieste di metadati
Il seguente codice campione recupera tutti i metadati disponibili per l'istanza e li visualizza, ad eccezione del token delaccount di serviziot.
Nel codice campione, nota il controllo per assicurarti che l'app sia in esecuzione in produzione. Se l'app viene eseguita localmente, non verranno restituiti metadati dalle richieste.
Inoltre, nota l'utilizzo del serializzatore / deserializzatore Google Gson JSON, del client HTTP e HTTP2 OkHttp e del sistema di modelli Thymeleaf. Non sono obbligatorie, ma sono librerie utili per i tuoi progetti.
Esecuzione in locale
Il server dei metadati è disponibile per le applicazioni di cui è stato eseguito il deployment: l'esecuzione locale sul server di sviluppo non è supportata. Puoi aggiungere un controllo dell'ambiente al tuo codice per prevedere risultati dei metadati solo se l'app è in esecuzione in produzione, come mostrato nel codice campione fornito sopra:
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
}