TPU-VM写入Google Cloud Bucket时出现403访问拒绝错误求助
TPU-VM写入GCS Bucket 403错误排查思路
1. 验证服务账号身份与权限绑定
- 执行
curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/email,确认当前VM使用的服务账号与正常VM完全一致 - 登录GCP控制台IAM页面,搜索该服务账号,检查是否配置了
Storage Object Creator或更高权限(如Storage Admin),且权限绑定范围覆盖当前项目或目标Bucket
2. 排查Bucket的特殊访问限制
- 检查Bucket的统一存储桶层级访问(Uniform Bucket Level Access):若开启此选项,Bucket的ACL设置会被忽略,必须通过IAM权限控制访问,需确认服务账号在IAM中拥有对应权限
- 检查Bucket的保留策略(Retention Policy):若Bucket开启保留策略,且操作违反保留规则,即使有写入权限也会返回403
- 检查项目的VPC服务控制(VPC Service Controls):若启用该功能,需确认新TPU-VM所在VPC在服务控制的允许列表内,不在列表的资源会被拒绝访问
3. 验证VM的身份验证与网络状态
- 执行
gcloud auth application-default print-access-token获取令牌,再用curl -H "Authorization: Bearer <TOKEN>" https://storage.googleapis.com/storage/v1/b/MY_BUCKET_NAME/o测试Bucket访问权限,排查令牌有效性 - 检查网络连通性:执行
ping storage.googleapis.com或telnet storage.googleapis.com 443,确认VM能正常访问GCS服务 - 重置身份凭据:执行
gcloud auth application-default revoke后重新获取凭据,或直接重启VM让元数据重新加载服务账号信息
4. 排查VM的配置差异
- 对比VM参数:执行
gcloud compute tpus tpu-vm describe <VM_NAME> --zone <ZONE>,检查acceleratorType、softwareVersion等参数与正常VM是否完全一致 - 检查环境变量:执行
echo $GOOGLE_APPLICATION_CREDENTIALS,确认是否指向错误的凭据文件 - 检查gsutil状态:执行
gsutil version -l对比正常VM的版本与配置,必要时执行gcloud components reinstall gsutil重新安装
5. 排查隐性资源限制
- 检查项目配额:在GCP控制台配额页面,确认TPU资源配额、GCS写入配额未耗尽
- 检查服务账号密钥:若使用手动创建的服务账号密钥,确认密钥未过期、未被禁用
内容的提问来源于stack exchange,提问作者user2521141
相关产品推荐
相关产品推荐

