Google cloud storage 获取gsutil以使用gcloud激活服务帐户的问题
我正在尝试获取一个服务帐户,我已通过gcloud auth登录激活该帐户,gsutil将获取该帐户。大查询命令行工具bq很好地解决了这个问题 我的行动顺序如下: 第一:Google cloud storage 获取gsutil以使用gcloud激活服务帐户的问题,google-cloud-storage,google-cloud-platform,Google Cloud Storage,Google Cloud Platform,我正在尝试获取一个服务帐户,我已通过gcloud auth登录激活该帐户,gsutil将获取该帐户。大查询命令行工具bq很好地解决了这个问题 我的行动顺序如下: 第一: gcloud auth activate-service-account --key-file snip.json snip@developer.gserviceaccount.com 这将导致输出: 已激活的服务帐户凭据[snip@developer.gserviceaccount.com] 第二: 我通过以下方式确认凭证处
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工具是否能找到它:
bq ls
它正确地列出了我项目中的数据集
第四:
我试着靠着我的桶。我已将我的服务帐户用户作为所有者添加到此bucket,以确保它具有权限
gsutil ls gs://snip
这导致:长时间等待,然后最终:
您正在尝试访问未配置的受保护数据
资格证书请访问
并注册一个帐户,然后运行“gcloud auth login”
命令配置gsutil以使用这些凭据。
然后我使用debug命令:
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内。您需要从云控制台授权bucket上的服务帐户,单击“编辑bucket权限”,然后添加服务帐户电子邮件地址的权限
我能够重现这个问题。这似乎只发生在JSON密钥文件中。谷歌已经意识到了这个问题。在问题解决之前,我建议使用P12密钥文件进行身份验证,或者在您试图访问的bucket上添加默认的project service帐户作为所有者。无可否认,我不确定这是否是问题的答案(请让我知道,我将删除它),但是,鉴于没有公认的答案,我看到的两个答案并没有解决我的问题,下面是修复我的
gsutil
问题的方法:
我通过控制台外壳在项目级重新初始化了gcloud
(单击控制台右上角的.
图标以获取外壳),然后运行如下操作:
user@direct-主题-1234:~$gcloud init
它会问你很多问题。我认为选择“使用新设置重新初始化此配置[cloudshell-[#]]是关键,但我不是100%确定
在我完成后,gsutil
开始工作。我做了一些不同的事情,但我希望这将有助于解决这个问题。我在做:
gsutil mv gs://bucketname/filename实例名称:/a/path/filename
(在上面,我正在将文件名
文件从项目存储桶移动到实例实例名
和目录/a/path/
)
在这个链接中间有一些有用的信息:
这对我来说是固定的
gsutil
!(我认为这是可行的,因为在执行上述操作之前,我的gsutil
是为我的bucket和实例不在的区域配置的。)嘿,仅供参考,我安装了PyOpenSSL并切换到p12。这很好,但JSON仍然不起作用。嗨,aqquadro-谢谢,但我已经完成了这一步。我已授予服务帐户所有者权限。