【发布时间】:2021-07-26 20:06:48
【问题描述】:
我有一个 golang 服务,它公开了一个 API,我们尝试将 CSV 上传到 GCP 存储桶。在我的本地主机上,我设置了环境变量 GOOGLE_APPLICATION_CREDENTIAL 并将此变量指向服务帐户 json 的文件路径。但是在部署到实际的 GCP 实例时,我在尝试访问此 API 时遇到以下错误。理想情况下,服务应该与 GCP 元数据服务器通信并获取凭据,然后将它们存储在 json 文件中。所以这里有两个问题:
- 服务未查询元数据服务以获取凭据。
- 如果文件存在(我手动创建的),由于权限问题无法访问。
任何帮助将不胜感激。
Error while initializing storage Client:dialing: google: error getting credentials using well-known file (/root/.config/gcloud/application_default_credentials.json): open /root/.config/gcloud/application_default_credentials.json: permission denied
【问题讨论】:
-
“权限被拒绝”表示运行您的应用程序的用户对该文件没有读取权限。默认情况下,/root 目录只能由 root 用户访问。尝试将您的 json 放到您的应用程序可以读取它的目录并使用 chmod 设置文件权限。
-
但是首先,它应该自动查询元数据服务器,不知道为什么它没有发生。
-
在 Compute Engine 上,如果您运行
gcloud auth application-default login' or similar commands, that will supersede reading metadata for credentials. Execute the commandsudo gcloud auth application-default revoke`。 -
您是如何设置计算引擎的?你设置环境变量了吗?
标签: go google-cloud-platform google-cloud-storage