我有一个 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
答案 0 :(得分:0)
最后,经过长时间的调试和网上搜索,发现已经有一个针对 go-storage 客户端的开放 PR 是开放的:https://github.com/golang/oauth2/issues/337。我不得不使用此方法对代码进行一些更改:https://pkg.go.dev/golang.org/x/oauth2/google#ComputeTokenSource 其中基本上我们试图从元数据服务器显式获取令牌,然后调用后续的云 API。