Go 存储客户端无法访问 GCP 存储桶
Go storage client not able to access GCP bucket
我有一个 golang 服务,它有一个 API 暴露在我们尝试将 CSV 上传到 GCP 存储桶的地方。在我的本地主机上,我设置了环境变量 GOOGLE_APPLICATION_CREDENTIAL
并将此变量指向服务帐户 json 的文件路径。但是当部署到实际的 GCP 实例时,我在尝试访问此 API 时遇到以下错误。理想情况下,该服务应与 GCP 元数据服务器通信并获取凭据,然后将它们存储在 json 文件中。所以这里有2个问题:
- 服务未查询元数据服务以获取凭据。
- 如果文件存在(我手动创建的),由于权限问题无法访问。
如有任何帮助,我们将不胜感激。
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
最后,经过长时间的调试和网络搜索,发现已经有一个 go-storage 客户端的开放 PR 是开放的:https://github.com/golang/oauth2/issues/337. I had to make a few changes in the code using this method: https://pkg.go.dev/golang.org/x/oauth2/google#ComputeTokenSource 基本上我们正在尝试显式获取令牌来自元数据服务器,然后调用后续云 API's.
我有一个 golang 服务,它有一个 API 暴露在我们尝试将 CSV 上传到 GCP 存储桶的地方。在我的本地主机上,我设置了环境变量 GOOGLE_APPLICATION_CREDENTIAL 并将此变量指向服务帐户 json 的文件路径。但是当部署到实际的 GCP 实例时,我在尝试访问此 API 时遇到以下错误。理想情况下,该服务应与 GCP 元数据服务器通信并获取凭据,然后将它们存储在 json 文件中。所以这里有2个问题:
- 服务未查询元数据服务以获取凭据。
- 如果文件存在(我手动创建的),由于权限问题无法访问。
如有任何帮助,我们将不胜感激。
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
最后,经过长时间的调试和网络搜索,发现已经有一个 go-storage 客户端的开放 PR 是开放的:https://github.com/golang/oauth2/issues/337. I had to make a few changes in the code using this method: https://pkg.go.dev/golang.org/x/oauth2/google#ComputeTokenSource 基本上我们正在尝试显式获取令牌来自元数据服务器,然后调用后续云 API's.