bjo*_*eru 8 google-app-engine cloud-storage oauth google-cloud-storage google-cloud-platform
我认为这样做会很直接,但我无法让它工作:
我正在尝试将文件从服务器 (GCE) 推送到谷歌云存储桶。为了避免gsutil
在服务器上授予命令太多权限,我在我的 google 项目的凭据部分创建了一个“服务帐户”。
在存储桶中,gs://mybucket
我已将具有 OWNER 权限的服务帐户的电子邮件地址作为 USER 添加到存储桶中。
在服务器上,我像这样激活了服务帐户:
$gcloud auth activate-service-account --key-file <path-to-keyfile> myservice
$gcloud auth list
Credentialed accounts:
- 1234567890@project.gserviceaccount.com
- myservice (active)
To set the active account, run:
$ gcloud config set account <account>
Run Code Online (Sandbox Code Playgroud)
所以到目前为止一切似乎都很好。但是,访问存储桶失败:
$gsutil cp tempfile gs://mybucket
CommandException: Error retrieving destination bucket gs://mybucket/: [('PEM routines', 'PEM_read_bio', 'no start line')]
$gsutil cp tempfile gs://mybucket/tempfile
Failure: [('PEM routines', 'PEM_read_bio', 'no start line')].
Run Code Online (Sandbox Code Playgroud)
当然,我确实验证了存储桶的 ACL 确实将服务帐户显示为 OWNER。我也在不同操作系统的不同机器上尝试过这个。结果一样。不用说,我自己无法理解错误消息。我将不胜感激任何建议。此要点中的详细错误日志。
更新:
删除~/.config
, wheregcloud
存储其授权数据后,使用已弃用的命令
gsutil config -e
Run Code Online (Sandbox Code Playgroud)
将按~/.boto
预期使用服务帐户生成。随后访问gs://mybucket
确实有效。
但是,我不确定这是我应该遵循的路径。我如何使用它来工作gcloud auth
?
小智 6
作为记录,我今天在尝试通过生成的json 密钥文件在 GCE 实例上启用服务帐户时看到了相同的错误消息。实例上预装的 Gcloud sdk 太旧,无法正确使用 json 密钥。此外,当尝试以这种方式启用我的帐户时,该工具不会提供任何反馈,但尝试使用该帐户进行授权会因上述错误而失败。
安装当前版本后,我能够通过启用我的服务帐户gcloud auth activate-service-account --key-file /key.json
,然后gsutil cp file gs://testbucket/
正常工作。
小智 1
我也遇到了同样的问题。Google 开发者控制台给我的默认密钥文件实际上是一个 .json 文件,其中密钥材料位于 json 字段中。我使用“gcloud auth revoke”撤销了服务帐户,从开发人员控制台生成了一个新密钥,并将密钥下载为 .p12 文件,这一次在激活服务帐户后它起作用了。
归档时间: |
|
查看次数: |
22209 次 |
最近记录: |