AI Platform部署自定义预测版本时指定服务账号被忽略求助
解决AI Platform跨项目GCS桶部署模型的权限问题
看起来你踩了一个很容易混淆的AI Platform权限误区——你指定的serviceAccount字段是模型运行预测时使用的身份,但部署阶段拉取模型文件时,AI Platform会用项目默认的Cloud ML服务账号(就是报错里的service-******@cloud-ml.google.com.iam.gserviceaccount.com),而不是你自定义的那个账号,这就是为什么你指定了服务账号但还是报错的核心原因。
下面给你两种可行的解决方案:
方案一:给默认Cloud ML服务账号添加GCS桶读取权限
这是最直接的解决方式,步骤如下:
- 登录GCP控制台,切换到桶所在的项目
gcp-project-2 - 进入「Cloud Storage > 浏览器」,找到目标桶
gs://[bucket-gcp-project-2] - 点击「权限」标签,点击「添加」按钮
- 在「新成员」输入框中填入报错里的那个默认服务账号:
service-******@cloud-ml.google.com.iam.gserviceaccount.com - 选择角色:
存储 > 存储对象查看器(Storage Object Viewer)(这个权限足够让它读取桶里的模型文件) - 保存配置,等待1-2分钟让权限生效后重新部署
方案二:使用自定义服务账号完成部署(进阶)
如果你不想给默认账号授权,可以通过配置让AI Platform在部署阶段使用你的自定义服务账号,需要两步配置:
- 给自定义服务账号添加桶权限:在
gcp-project-2的GCS桶权限中,添加你的自定义账号my-service-account@[gcp-project-1].iam.gserviceaccount.com,同样授予存储对象查看器权限 - 允许默认账号扮演自定义账号:在
gcp-project-1中,找到默认的Cloud ML服务账号(就是报错里的那个),给它添加服务账号令牌创建者(Service Account Token Creator)角色,这个权限允许它临时扮演你的自定义账号去拉取模型文件 - 重新提交部署请求,确保
serviceAccount字段正确填写你的自定义账号
额外验证步骤
可以用gsutil命令确认权限是否正确配置:
gsutil iam get gs://[bucket-gcp-project-2]
查看输出的权限列表,确认对应的服务账号已经被添加并拥有正确的角色。
内容的提问来源于stack exchange,提问作者klesouza
相关产品推荐
相关产品推荐

