如何在 application.properties 文件中指定 GCP 凭证位置(用于在 GCP 中使用 Pub/Sub)?

Roy*_* Hu 3 credentials publish-subscribe google-cloud-platform

通过在 application.properties 文件中指定文件位置来传递服务帐户密钥文件(从 GCP 控制台生成),这似乎很简单。但是,我尝试了以下所有选项:

1. spring.cloud.gcp.credentials.location=file:/home/my_user_id/mp6key.json
2. spring.cloud.gcp.credentials.location=file:src/main/resources/mp6key.json
3. spring.cloud.gcp.credentials.location=file:./main/resources/mp6key.json
4. spring.cloud.gcp.credentials.location=file:/src/main/resources/mp6key.json
Run Code Online (Sandbox Code Playgroud)

这一切都以同样的错误结束:

java.io.FileNotFoundException: /home/my_user_id/mp6key.json (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

谁能建议我应该将密钥文件放在哪里,然后我应该如何正确指定文件的路径?

相同的程序在 Ecplise 中成功运行,并使用 GCP 的 Pub/Sub 处理(使用 GCP 中生成的项目 ID/服务帐户密钥)发布和订阅消息,但在部署到 GCP 上运行后,现在仍然遇到上述问题。

Aks*_*DAs 6

正如官方文档中提到的,凭证文件可以从许多不同的位置获取,例如文件系统、类路径、URL 等。

例如,如果服务帐户密钥文件在类路径中存储为src/main/resources/key.json,则传递以下属性

spring.cloud.gcp.credentials.location=classpath:key.json
Run Code Online (Sandbox Code Playgroud)

如果密钥文件存储在本地文件系统的其他位置,请使用file属性值中的前缀

spring.cloud.gcp.credentials.location=file:<path to key file>
Run Code Online (Sandbox Code Playgroud)