A Google Cloud Platform fornece um servidor de metadados que conhece os detalhes da sua instância do App Engine, como o ID do projeto que a contém, as contas de serviço e os tokens usados pelas contas de serviço. Pode aceder a estes dados através de pedidos HTTP simples: não são necessárias bibliotecas cliente.
Esta página mostra como aceder aos metadados da instância a partir da sua aplicação de tempo de execução Java 8 implementada fazendo chamadas HTTP aos pontos finais do servidor de metadados adequados.
Uma forma útil de usar esta API é obter o token da conta de serviço e fornecê-lo como um token de portador no cabeçalho de autorização de uma das APIs Google Cloud, para autenticar a sua aplicação nesse serviço de API específico. Consulte a documentação da API Google Cloud Translation para ver um exemplo de como estes tokens de autorização são usados.
Identificar que ponto final de metadados usar
A tabela seguinte lista os pontos finais onde pode fazer pedidos HTTP para metadados específicos. O servidor de metadados está acessível em
http://metadata.google.internal
.
Ponto final de metadados | Descrição |
---|---|
/computeMetadata/v1/project/numeric-project-id |
O número do projeto atribuído ao seu projeto. |
/computeMetadata/v1/project/project-id |
O ID do projeto atribuído ao seu projeto. |
/computeMetadata/v1/instance/zone |
A zona na qual a instância está a ser executada. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
O email da conta de serviço predefinido atribuído ao seu projeto. |
/computeMetadata/v1/instance/service-accounts/default/ |
Apresenta todas as contas de serviço predefinidas do seu projeto. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Lista todos os âmbitos suportados para as contas de serviço predefinidas. |
/computeMetadata/v1/instance/service-accounts/default/token |
Devolve o token de autorização que pode ser usado para autenticar a sua aplicação noutras APIs Google Cloud. |
Por exemplo, para obter o ID do projeto, envie um pedido para
http://metadata.google.internal/computeMetadata/v1/project/project-id
.
Fazer pedidos de metadados
O seguinte exemplo de código obtém todos os metadados disponíveis para a instância e apresenta-os, exceto o token da conta de serviço.
No exemplo de código, repare na verificação para garantir que a app está a ser executada em produção. Se a app estiver a ser executada localmente, não são devolvidos metadados dos pedidos.
Tenha também em atenção a utilização do serializador / desserializador Google Gson JSON, do cliente HTTP e HTTP2 OkHttp e do sistema de modelos Thymeleaf. Estas não são obrigatórias, mas são bibliotecas úteis para os seus próprios projetos.
Execução local
O servidor de metadados está disponível para aplicações implementadas: a execução local no servidor de desenvolvimento não é suportada. Pode adicionar uma verificação do ambiente ao seu código para esperar resultados de metadados apenas se a app estiver a ser executada em produção, conforme mostrado no exemplo de código fornecido acima:
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
}