首页 文章

如何让gsutil在docker容器中使用gcloud凭据

提问于
浏览
0

[更新]

为什么gsutil在Cloud Shell上的docker容器中运行时不应该使用Gcloud凭据?

根据[1],gsutil应该在可用时使用gcloud凭据:

一旦通过gcloud auth配置了凭证,无论用户是否有任何boto配置文件(位于〜/ .boto,除非在BOTO_CONFIG环境变量中指定了不同的路径),将使用这些凭据 . 但是,如果需要一种未存储在gcloud凭证存储中的非GCS凭证(例如,S3帐户的HMAC凭证),gsutil仍会在boto配置文件中查找凭据 .

这似乎在gcloud安装中工作正常,但在docker镜像中却没有 . 我在Cloud Shell中使用的过程是:

docker run -ti --name gcloud-config google/cloud-sdk gcloud auth login
docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gcloud compute instances list --project my_project
... (works ok)

docker run --rm -ti --volumes-from gcloud-config google/cloud-sdk gsutil ls gs://bucket/

ServiceException: 401 Anonymous caller does not have storage.objects.list access to bucket.

问候

凯文

[1] https://cloud.google.com/storage/docs/gsutil/addlhelp/CredentialTypesSupportingVariousUseCases

1 回答

  • 1

    您需要使用凭据安装卷:

    docker run -v ~/.config/gcloud:/root/.config/gcloud your_docker_image
    

相关问题