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