我正在Google Cloud AI培训(Cloud ML Engine)上启动容器映像
在这些容器中,我需要使用gsutil。一些容器具有gsutil。在那种情况下,我可以立即使用它而无需任何身份验证步骤。
某些容器没有gsutil,因此我必须安装它。问题是已安装的gsutil无法使用。
[当我使用正式的cloud-sdk
图像时,gsutil
可以正常工作,无需任何身份验证步骤。
[当我使用python:3.7
图像并从PyPI安装gsutil
时,它不起作用:
python -m pip install gsutil --quiet
gsutil cp a gs://b/c
ServiceException:401匿名调用者没有storage.objects.get访问权限...
如何使独立的gsutil获得所需的凭据?
[大多数指南专注于手动调用gcloud auth
,复制URL和复制回令牌。这不是我寻求的解决方案(应该是自动化的)。我知道自动解决方案是可行的,因为在某些图像中gsutil
开箱即用。
工作负载标识是更好的方法。
您在Kubernetes服务帐户和Google Cloud Service帐户之间创建关系。
https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
这是因为单独的pip install gsutil不会配置凭据,这就是为什么它是匿名用户,如错误所示。您将需要配置凭据以访问受保护的数据。
将以下行放入您的docker文件中,它应该可以工作:
RUN echo'[GoogleCompute] \ nservice_account =默认值>> /etc/boto.cfg
将gsutil配置为使用默认服务帐户。