gcloud 运行 和 Firebase 管理 SDK
gcloud run & Firebase Admin SDK
我已经将 JVM 应用程序部署到 Google 云 运行,它使用 Firebase Admin SDK 在 Firebase 云消息传递上发送通知。
使用 GOOGLE_APPLICATION_CREDENTIALS 在本地一切正常。然而,部署的应用程序会抛出如下错误:
java.lang.IllegalArgumentException: Project ID is required to access messaging service. Use a service account credential or set the project ID explicitly via FirebaseOptions. Alternatively you can also set the project ID via the GOOGLE_CLOUD_PROJECT environment variable.
我将 FirebaseMessaging 实例创建为:
FirebaseMessaging.getInstance(
FirebaseApp.initializeApp(
FirebaseOptions.Builder().setCredentials(
GoogleCredentials.getApplicationDefault()
).build()
我已经使用具有 Cloud 运行 管理员权限的服务帐户部署了 Cloud 运行 实例。
我的理解是部署到任何 GCP 服务的应用程序会自动获取应用程序凭据。 Cloud 运行 和 Firebase Admin SDK 的组合有区别吗?
如有任何帮助,我们将不胜感激。
您有两个选择:
- Query the cloud metadata service 找到您的 Cloud 运行 实例部署到的项目 ID。这只能在 Cloud 运行 中完成 - 如果您在本地测试,它将无法工作。
- 在部署期间以某种方式使项目 ID 可用于 Cloud 运行。
实现#2 的一种简单方法是将项目 ID 放入环境中,以便 Admin SDK 自动获取。例如,一个 shell 脚本:
service_id="your-service-id"
project_id="your-project-id"
gcloud run deploy "$service_id" \
--project "$project_id" \
--image "..." \
--platform managed \
--update-env-vars "GOOGLE_CLOUD_PROJECT=$project_id"
请注意填充 GOOGLE_CLOUD_PROJECT
的 --update-env-vars
。
我已经将 JVM 应用程序部署到 Google 云 运行,它使用 Firebase Admin SDK 在 Firebase 云消息传递上发送通知。 使用 GOOGLE_APPLICATION_CREDENTIALS 在本地一切正常。然而,部署的应用程序会抛出如下错误:
java.lang.IllegalArgumentException: Project ID is required to access messaging service. Use a service account credential or set the project ID explicitly via FirebaseOptions. Alternatively you can also set the project ID via the GOOGLE_CLOUD_PROJECT environment variable.
我将 FirebaseMessaging 实例创建为:
FirebaseMessaging.getInstance(
FirebaseApp.initializeApp(
FirebaseOptions.Builder().setCredentials(
GoogleCredentials.getApplicationDefault()
).build()
我已经使用具有 Cloud 运行 管理员权限的服务帐户部署了 Cloud 运行 实例。
我的理解是部署到任何 GCP 服务的应用程序会自动获取应用程序凭据。 Cloud 运行 和 Firebase Admin SDK 的组合有区别吗?
如有任何帮助,我们将不胜感激。
您有两个选择:
- Query the cloud metadata service 找到您的 Cloud 运行 实例部署到的项目 ID。这只能在 Cloud 运行 中完成 - 如果您在本地测试,它将无法工作。
- 在部署期间以某种方式使项目 ID 可用于 Cloud 运行。
实现#2 的一种简单方法是将项目 ID 放入环境中,以便 Admin SDK 自动获取。例如,一个 shell 脚本:
service_id="your-service-id"
project_id="your-project-id"
gcloud run deploy "$service_id" \
--project "$project_id" \
--image "..." \
--platform managed \
--update-env-vars "GOOGLE_CLOUD_PROJECT=$project_id"
请注意填充 GOOGLE_CLOUD_PROJECT
的 --update-env-vars
。