【问题标题】:Issues getting gsutil to use the gcloud activated service account让 gsutil 使用 gcloud 激活的服务帐户时出现问题
【发布时间】:2015-06-06 16:27:45
【问题描述】:

我正在尝试获取一个通过 gcloud auth login 激活的服务帐户,以供 gsutil 获取。大查询命令行工具 bq 运行良好。

我遵循的操作顺序:

第一:

gcloud auth activate-service-account --key-file snip.json snip@developer.gserviceaccount.com

这导致输出: 为 [snip@developer.gserviceaccount.com] 激活的服务帐户凭据

第二: 我通过以下方式确认凭据处于活动状态:

gcloud auth list

这会导致: **认证账户: - snip@developer.gserviceaccount.com(活跃)...

第三: 我看看 bq tools 能不能把它捡起来:

bq ls

正确列出了我项目中的数据集。

第四: 我在我的桶上尝试 gsutil。我已将我的服务帐户用户作为所有者添加到此存储桶,以确保它具有权限。

gsutil ls gs://snip

这会导致:漫长的等待,然后最终: 您正在尝试访问未配置的受保护数据 证书。请访问https://cloud.google.com/console#/project 并注册一个帐户,然后运行“gcloud auth login” 命令配置 gsutil 以使用这些凭据。

然后我使用调试命令:

gsutil -D

输出:

gsutil version: 4.11
checksum: snip (OK)
boto version: 2.30.0
python version: 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)]
OS: Linux 3.10.0-123.20.1.el7.x86_64
multiprocessing available: True
using cloud sdk: True
config path: no config found
gsutil path: /home/blah/google-cloud-sdk/platform/gsutil/gsutil
compiled crcmod: False
installed via package manager: False
editable install: False
Command being run: /home/blah/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=snip -D
config_file_list: []
config: [('debug', '0'), ('working_dir', '/mnt/pyami'),'https_validate_certificates', 'true'), ('debug', '0'), ('working_dir', '/mnt/pyami'), ('default_project_id', 'snip')]

在此之后,如果我通过 gcloud auth login 将自己的用户 ID 添加到凭证存储区,gsutil ls gs://snip 可以正常工作。如果我随后将服务帐户切换为活动帐户而不是我的用户 ID(使用 gcloud config set account),那么它将不再工作 - 我收到与上述相同的错误消息。

最后一条信息 - 我在我自己的虚拟机上运行它,而不是在 GCE 中。

【问题讨论】:

  • 嘿,仅供参考,我安装了 PyOpenSSL 并切换到 p12。效果很好,但 JSON 仍然不起作用。

标签: google-cloud-storage google-cloud-platform


【解决方案1】:

我能够重现该问题。它似乎只发生在 JSON 密钥文件中。 Google 已根据 this 了解此问题。在解决之前,我建议您使用 P12 密钥文件进行身份验证,或者将默认项目服务帐户添加为您尝试访问的存储桶的所有者。

【讨论】:

    【解决方案2】:

    您需要在云控制台中授权存储桶上的服务账户点击“编辑存储桶权限”,然后为服务账户的电子邮件地址添加权限。

    【讨论】:

    • 嗨 aqquadro - 谢谢,但我已经完成了这一步。我已授予服务帐户所有者权限。
    【解决方案3】:

    诚然,我不确定这是问题的答案(请告诉我,我会删除它),但看到没有可接受的答案,我看到的两个答案并没有解决问题我,这是为我解决了gsutil 问题的原因:

    我通过控制台外壳在项目级别重新初始化gcloud(单击控制台右上角的>_ 图标以获取外壳),然后运行如下内容: user@direct-topic-1234:~$ gcloud init

    它会问你一堆问题。我认为选择“使用新设置重新初始化此配置 [cloudshell-[#]]”是关键,但我不是 100% 确定。

    在我完成之后gsutil 开始工作。我正在做一些不同的事情,但我希望这将有助于解决这个问题。我在做:

    gsutil mv gs://bucketname/filename instance-name:/a/path/filename

    (在上面,我将filename文件从项目桶移动到实例instance-name和目录/a/path/。)

    在此链接的中途有一些有用的信息: https://cloud.google.com/compute/docs/disks/gcs-buckets

    这为我修复了gsutil! (我认为它有效,因为在执行上述操作之前,我的 gsutil 已配置为我的存储桶和实例不在的区域。)

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 1970-01-01
      • 2011-05-16
      • 2017-04-16
      • 2019-04-02
      • 2016-06-25
      • 2021-08-16
      • 2017-03-15
      • 2020-08-29
      相关资源
      最近更新 更多