如何使用Python从Google Cloud Storage下载文件并完成凭证认证
GCS Python SDK 身份认证最优方案
不同运行环境下的最优认证方式按优先级从高到低排列:
- GCP内部环境(GCE、GKE、Cloud Run、Cloud Functions等):直接给运行资源绑定对应权限的服务账号即可,SDK会自动拉取实例关联的服务账号凭证,完全不需要手动处理密钥,没有密钥泄露风险,是生产环境的首选方案。
- 本地开发环境:优先执行
gcloud auth application-default login命令生成用户身份的应用默认凭证(ADC),SDK会自动读取该凭证,不需要写任何认证相关代码,也不需要生成、保管服务账号密钥。如果必须使用服务账号身份做本地测试,将服务账号密钥文件存放在项目目录外的安全路径,通过系统环境变量GOOGLE_APPLICATION_CREDENTIALS指定密钥文件的绝对路径,不要把密钥文件提交到代码仓库。 - 非GCP生产环境:优先使用工作负载身份联邦对接外部身份系统,避免生成长期生效的服务账号密钥。如果必须使用服务账号密钥,将密钥存放在专业的机密管理服务中,运行时动态读取,不要硬编码到代码、配置文件中。
Python 实现GCS文件下载代码
首先安装对应依赖:pip install google-cloud-storage
绝大多数场景下直接使用应用默认凭证即可,不需要额外传入认证参数:
from google.cloud import storage def download_gcs_file(bucket_name, gcs_file_path, local_save_path): # 自动读取当前环境的默认凭证,适配所有符合ADC规范的环境 storage_client = storage.Client() bucket = storage_client.get_bucket(bucket_name) blob = bucket.blob(gcs_file_path) # 下载到本地指定路径 blob.download_to_filename(local_save_path) # 调用示例 # download_gcs_file("test-bucket", "data/report.csv", "./local_report.csv")
如果需要手动指定服务账号密钥文件(仅特殊场景使用,不推荐作为常规方案):
from google.cloud import storage def download_gcs_file_with_key(bucket_name, gcs_file_path, local_save_path, sa_key_path): storage_client = storage.Client.from_service_account_json(sa_key_path) bucket = storage_client.get_bucket(bucket_name) blob = bucket.blob(gcs_file_path) blob.download_to_filename(local_save_path)
大文件下载建议开启校验,调用
download_to_filename时传入checksum="md5"参数,自动校验下载文件的完整性,避免文件损坏。
内容的提问来源于stack exchange,提问作者Saksham Jain
相关产品推荐
相关产品推荐

