You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用gsutil生成的boto文件认证GCS Python客户端

操作方案

Google Cloud 官方Python Storage客户端不会原生直接读取gsutil生成的boto配置文件完成认证,你可以通过以下两种适配方式,在未预设gcloud凭证的自动化平台上完成身份校验:

  • 方案1:提取boto文件内的有效凭证,显式传入客户端(官方推荐)
    你生成的boto文件一般存储两类GCS认证信息,对应不同的加载逻辑:

    1. 若boto文件内配置了gs_service_key_file字段,说明使用服务账号JSON密钥认证,直接提取该字段对应的密钥文件本地路径,用服务账号凭证类加载即可:
    from google.cloud import storage
    from google.oauth2 import service_account
    
    # 替换为boto文件中gs_service_key_file字段对应的实际路径
    KEY_PATH = "/runtime/mounted/path/service-account.json"
    credentials = service_account.Credentials.from_service_account_file(KEY_PATH)
    # 初始化客户端,完全跳过环境默认凭证推断逻辑
    client = storage.Client(credentials=credentials)
    
    # 后续可正常执行Google Play报告下载逻辑,例:
    # bucket = client.get_bucket("your-play-report-bucket")
    # blobs = bucket.list_blobs(prefix="stats/installs/")
    
    1. 若boto文件内配置的是aws_access_key_id、aws_secret_access_key字段,说明使用GCS HMAC密钥认证,提取两个字段的值后用对应凭证类加载:
    from google.cloud import storage
    from google.auth import aws
    
    # 替换为boto文件中提取的HMAC密钥值
    ACCESS_ID = "your-hmac-access-id"
    SECRET_KEY = "your-hmac-secret-key"
    credentials = aws.Credentials(
        access_key_id=ACCESS_ID,
        secret_access_key=SECRET_KEY
    )
    # 注意HMAC认证需要显式传入你的GCP项目ID
    client = storage.Client(
        credentials=credentials,
        project="your-gcp-project-id"
    )
    
  • 方案2:通过环境变量指定boto文件路径(兼容旧逻辑)
    如果你不想手动解析boto文件,可以在Python脚本启动前配置BOTO_CONFIG环境变量,值为boto配置文件的绝对路径,该方式需要提前安装boto依赖包,仅对基于boto实现的GCS访问逻辑生效,不推荐在新写的脚本中使用:

    # 安装依赖
    pip install boto
    # 配置环境变量后启动脚本
    export BOTO_CONFIG=/runtime/mounted/path/.boto
    python download_play_report.py
    

注意:自动化平台部署时不要硬编码凭证内容,建议将服务账号密钥、boto配置存入平台的密钥管理服务,运行时动态挂载到本地文件系统后再读取,避免凭证泄露。

内容的提问来源于stack exchange,提问作者Muhamad Iqbal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:51:24