具有 Cloud Run 和 Cloud Firestore 的 Spring Boot 应用程序

Posted

技术标签:

【中文标题】具有 Cloud Run 和 Cloud Firestore 的 Spring Boot 应用程序【英文标题】:Spring boot application with cloud run and cloud firestore 【发布时间】:2021-12-03 11:33:36 【问题描述】:

我有一个简单的 Spring Boot 微服务 (gradle),我想将它部署在云上运行并使用云 Firestore 来存储一些数据。我在本地配置它,所以我可以读取和写入数据到 Firestore。如果我在本地创建并运行应用程序的 docker 映像,它就可以工作。 当我将它部署到云运行时,应用程序正常启动,

除非它尝试从 firestore 读取数据(当我调用端点时),我在邮递员中得到以下异常:

java.util.concurrent.ExecutionException: com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: 权限缺失或不足。

在云端,docker 镜像是通过我的 github repo 使用 cloud build 创建的。

我应该怎么做才能让它在云上运行?

【问题讨论】:

问题。您的本地服务帐户权限是否与已部署环境上的权限相同? 是的,我使用了同一个服务帐号 这有关系吗? ***.com/questions/52772199/… 不是真的,我从本地机器和本地 docker 容器成功连接到 firestore。只有当应用程序在 Cloud Run 上运行时才会出现问题。当我调用服务时,有一些奇怪的日志。 如何部署?您如何使用相同的服务帐户在本地进行测试(如何加载它)?你能分享这些代码吗? 【参考方案1】:

我发现了问题。

我按照documentation 的说明进行操作,这里使用了这个库:

compile 'com.google.cloud:google-cloud-firestore:1.32.0'

然后我尝试使用这个库(这是documentation),一切正常!

implementation 'com.google.firebase:firebase-admin:8.1.0'

【讨论】:

以上是关于具有 Cloud Run 和 Cloud Firestore 的 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Messaging (GCM) 可以与 Kindle Fire 搭配使用吗?

Cloud Run 和 Cloud Scheduler - 在完整数据集上获取失败结果

将 Cloud Armor 与 Cloud Run 结合使用并避免绕过

通过启用 IAM 登录的 cloud-sql-proxy 从 Cloud Run 连接到 Cloud SQL

如何手动指定 X-Cloud-Trace-Context 标头值以关联和跟踪单独的 Cloud Run 请求中的日志?

Terraform:Cloud Run 服务上的 Cloud Endpoints?