Google Cloud Platform fornisce un server di metadati che conosce i dettagli della tua istanza App Engine, ad esempio l'ID progetto contenente, 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 delle istanze dall'applicazione di runtime Java 8 di cui è stato eseguito il deployment effettuando chiamate HTTP agli endpoint del server dei metadati appropriati.
Un modo utile per utilizzare questa API è ottenere il token dell'account di servizio e fornirlo come token di accesso nell'intestazione Authorization di una delle API Google Cloud per autenticare l'applicazione a quel determinato servizio API. Consulta la documentazione dell'API Google Cloud Translation per un esempio di come vengono utilizzati questi token di accesso.
Identificare l'endpoint dei metadati da utilizzare
La tabella seguente elenca gli endpoint a cui puoi inviare 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 è in esecuzione 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 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 la tua applicazione ad altre API Google Cloud. |
Ad esempio, per recuperare l'ID progetto, invia una richiesta a
http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Inviare richieste di metadati
Il seguente codice campione recupera e mostra tutti i metadati disponibili per l'istanza, ad eccezione del token dell'account di servizio.
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, tieni presente l'utilizzo del serializzatore / deserializzatore Google Gson JSON, del client HTTP e HTTP2 OkHttp e del sistema di creazione di modelli Thymeleaf. Non sono obbligatori, ma sono librerie utili per i tuoi progetti.
Eseguire l'app in locale
Il server di 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 codice per prevedere i risultati dei metadati solo se l'app è in esecuzione in produzione, come mostrato nell'esempio di 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
}