【问题标题】:Authenticate Google Cloud Storage Python client with gsutil-generated boto file使用 gsutil 生成的 boto 文件对 Google Cloud Storage Python 客户端进行身份验证
【发布时间】:2022-06-11 00:55:12
【问题描述】:

我正在尝试使用 GC Python 客户端库从 Google Play(通过云存储)自动下载报告。从文档中,我发现it's possible to do it using gsutil。我发现here 已经回答了这个问题,但我还发现Client 从环境中推断出凭据,我计划在(假设)没有设置 gcloud 凭据的自动化平台上执行此操作。

我发现您可以 generate gsutil boto file 然后将其用作凭据,但是如何将其加载到客户端库中?

【问题讨论】:

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


    【解决方案1】:

    这并不完全是您问题的直接答案,但最好的方法是在 GCP 中创建一个服务帐户,然后使用该服务帐户的 JSON 密钥文件与 GCS 进行交互。请参阅this documentation,了解如何生成所述密钥文件。
    注意: 您应该将此密钥文件视为密码,因为它具有您在以下步骤中授予的访问权限。因此,例如,不要上传到公共 github 存储库。

    您还必须为服务帐户授予Storage Object Viewer 权限,或者一个具有更多权限的帐户。
    注意: 出于安全考虑,请始终使用最少的权限。

    此代码非常简单。请注意,这与链接中提到的生成密钥文件的方法非常相似,但客户端实例化的方式除外。

    requirements.txt

    google-cloud-storage
    

    代码

    from google.cloud import storage
    cred_json_file_path = 'path/to/file/credentials.json'
    client = storage.Client.from_service_account_json(cred_json_file_path)
    

    如果您想使用通用的Google API Python client library,您可以使用this library 使用 JSON 密钥文件对凭证对象进行类似的实例化,但是对于 GCS,google-cloud-storage 库是非常受欢迎的,因为它确实如此幕后有一些魔力,因为 API python 客户端库是一个非常通用的库,(理论上)可以与所有 Google API 一起使用。

    【讨论】:

      【解决方案2】:

      gsutil 将在调用它的用户的主目录中查找 .boto 文件,因此对于 Linux 和 macOS,为 ~/.boto,对于 Windows,在 %HOMEDRIVE%%HOMEPATH% 中查找。

      或者,您可以将 BOTO_CONFIG 环境变量设置为您要使用的 .boto 文件的路径。这是一个例子:

      BOTO_CONFIG=/path/to/your_generated_boto_file.boto gsutil -m cp files gs://bucket
      

      您可以使用“-e”标志和 config 命令生成带有服务帐户的 .boto 文件:gsutil config -e

      另外请注意,如果 gsutil 与 gcloud 命令一起安装,gcloud 将与 gsutil 共享其身份验证配置,除非您使用以下命令禁用该行为:gcloud config set pass_credentials_to_gsutil false

      https://cloud.google.com/storage/docs/boto-gsutil

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2016-02-03
        • 2022-01-28
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多