java - 如何获取Java应用程序正在运行的GAE项目的ID?

标签 java google-app-engine google-cloud-platform

我有一个在 Google App Engine 中运行的 Java 应用程序。我需要以编程方式获取它在 Java 中运行的项目的 ID。

This question解释了如何使用 Python 实现我的目标,但这当然不是 Java。

This documentation说我可以简单地调用 ApiProxy.getCurrentEnvironment().getAppId(),但此方法在我的应用程序中仅返回 null。

This question解释了如何通过 HTTP 请求获取项目 ID,但我想知道是否有更好的方法在 Java 中执行此操作,而无需手动构造 HTTP 请求?

编辑:Luyi 的答案似乎对大多数人都有效,但对我来说返回 null。

最佳答案

您可以使用 com.google.cloud.ServiceOptions 帮助程序获取默认项目 ID。 它将为您提供一些抽象,以便能够根据您的上下文和当前应用程序引擎运行时检索project-id

例如Java11运行时不支持某些旧的API。通过 HTTP 请求元数据来获取 project-id 是一种通用的解决方案。

在这种情况下,ServiceOptions.getDefaultProjectId 是保持代码通用且简单的好方法。

Spring Cloud GCP在幕后使用此方法来检索 project-id

导入 google-cloud-core 依赖项:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-core</artifactId>
  <version>1.94.0</version>
</dependency>

然后使用ServiceOptions:

import com.google.cloud.ServiceOptions;
...

String projectId = ServiceOptions.getDefaultProjectId();

关于java - 如何获取Java应用程序正在运行的GAE项目的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65741824/

相关文章:

java - 如何创建大小大于整数最大值的数组

java - Spring 和 hibernate : Block user from writing

java - 如何将非基本类型数组中的所有元素值设置为值/非空?

node.js - 在 Google 应用引擎上通过 Office365 通过 Nodemailer 发送电子邮件时出错

firebase - 将文件从 bucket1 复制到 Google Cloud Storage 中的 bucket2

mysql - ssl连接错误: unknown error number

java - 使用 JNA 从 Java 调用 Windows UWP API

mysql - 在 app.yaml 中存储 secret 的最佳实践

java - 在 GAE 上实现新闻提要——我应该使用 Prospective Search 吗?

google-apps-script - 无法更改 Apps 脚本的 Cloud 项目