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

为何写入GCS存储桶却生成本地开发Blob存储条目?

解决GAE本地开发时文件上传到本地Blobstore而非云端GCS的问题

嘿,我之前在使用GAE标准环境老版本SDK开发时,也碰到过一模一样的问题!其实这是因为1.9.61版本的本地开发服务器默认会用模拟的Blobstore来替代真实的GCS——目的是让你在离线状态下也能开发,但这就导致你的上传操作都落到本地了,没到云端桶里。下面是我当时解决这个问题的步骤:

一、启动本地服务器时强制连接云端GCS

老版本的dev_appserver.py需要通过特定参数关闭本地Blobstore模拟,直接连接真实的GCS。你启动服务器的时候,要加上这个参数:

dev_appserver.py --blobstore_cloud_storage_bucket=gs://your-default-bucket-name your_app_directory

把your-default-bucket-name替换成你在云控制台看到的默认桶名(格式一般是[你的项目ID].appspot.com)。如果要用到暂存桶,就换成暂存桶的名称。

二、配置本地服务账号权限

本地开发服务器需要有访问云端GCS的权限,所以你得:

  • 去云控制台的IAM与管理 > 服务账号页面,创建一个新的服务账号(或用现有账号),给它添加Storage Object Creator或者Storage Admin的权限(后者权限更大,开发时用没问题)。
  • 下载这个服务账号的JSON密钥文件,保存到本地。
  • 启动服务器前,设置环境变量指向这个密钥文件:
    # Linux/macOS
    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your-service-account-key.json"
    
    # Windows(命令提示符)
    set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your-service-account-key.json
    

三、检查代码里的桶名是否正确

确保你代码里指定的桶名和云端存在的桶完全一致,比如:

import cloudstorage as gcs

bucket_name = 'your-project-id.appspot.com'
file_path = '/{}/test-upload.txt'.format(bucket_name)

with gcs.open(file_path, 'w') as f:
    f.write('Hello GCS!')

这里的bucket_name必须和云控制台里的桶名一字不差,注意GCS桶名是全小写的,别写错大小写。

四、验证结果

启动服务器后运行上传代码,然后去云控制台的GCS页面刷新,应该就能看到新上传的文件了。同时你可以检查本地的.blobstore目录(如果存在的话),不会再新增本地条目,说明上传请求已经走到云端了。

另外提个小提醒:1.9.61是比较旧的SDK版本,如果你后续升级SDK,新版本的本地开发服务器可能默认就支持直接连接GCS,但当前版本就得按上面的步骤来配置~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:24