无法将VM数据导出至Cloud Storage:访问被拒问题求助
解决方案:GCE VM无法写入Cloud Storage存储桶
核心问题定位
你给个人IAM账号加权限没用——GCE虚拟机默认使用的是Compute Engine默认服务账号,而非你个人账号,得给这个服务账号配置存储桶的写入权限。
具体修复步骤
步骤1:获取VM的服务账号
登录GCE控制台,找到目标VM实例,进入详情页,在「服务账号」栏复制对应邮箱(格式通常为xxxx-compute@developer.gserviceaccount.com)。步骤2:给服务账号配置存储桶权限
进入Cloud Storage控制台,打开目标存储桶(注意报错里的桶是pacific_peche,要和你代码里的my-bucket名称一致,避免桶名写错),切换到「权限」标签:- 点击「添加权限」,将复制的服务账号邮箱作为主体添加;
- 授予至少
Storage Object Creator权限(需要全管理权限可选Storage Admin); - 保存设置,等待1-2分钟让权限生效。
步骤3:验证VM的身份上下文
在VM的Jupyter终端执行:gcloud auth list确认当前活跃账号是VM的服务账号。如果显示个人账号,说明你手动登录过,执行
gcloud auth revoke退出个人账号,让VM自动使用服务账号身份。步骤4:排查环境变量干扰
确认未设置GOOGLE_APPLICATION_CREDENTIALS环境变量指向其他密钥文件(该变量会覆盖VM默认服务账号)。在终端执行:echo $GOOGLE_APPLICATION_CREDENTIALS如果有输出,删除该环境变量后重启Jupyter。
额外排查点
- 确认存储桶未启用对象版本控制或保留政策导致写入限制;
- 检查VPC网络是否限制GCS上传端点(能读取则大概率不是,但可执行
curl -I https://storage.googleapis.com/upload/storage/v1/b/pacific_peche/o测试连通性,返回400为正常,返回403/超时则是网络问题)。
内容的提问来源于stack exchange,提问作者Hamza Ajeddig
相关产品推荐
相关产品推荐

