GCP AutoML训练NER模型时Cloud Storage存储桶读取权限不足问题的解决方法咨询
解决AutoML访问Cloud Storage存储桶的权限问题
我之前也碰到过一模一样的问题!作为项目所有者,你完全有权限给AutoML服务账号配置存储桶访问权限,不用找什么“给所有API授权”的选项,直接给AutoML专属的服务账号加读取权限就行,步骤很清晰:
第一步:找到AutoML的服务账号
AutoML训练时会使用项目专属的服务账号,格式是:
service-PROJECT_NUMBER@gcp-sa-automl.iam.gserviceaccount.com
你需要替换其中的PROJECT_NUMBER为你的GCP项目编号(是数字串,不是项目ID)。获取项目编号的方法:
- 控制台方式:点击GCP控制台右上角的项目名称下拉框,就能看到项目编号
- 命令行方式:执行以下命令(替换
YOUR_PROJECT_ID为你的项目ID):gcloud projects describe YOUR_PROJECT_ID --format="value(projectNumber)"
第二步:给服务账号添加存储桶读取权限
你可以选控制台操作或者命令行操作,两种方式都有效:
方式一:通过Cloud Storage控制台操作
- 打开Cloud Storage控制台,找到你存放标注数据的存储桶
- 切换到权限标签页,点击页面顶部的添加按钮
- 在「新成员」输入框中,填入第一步拿到的AutoML服务账号
- 在「角色」下拉菜单里,选择Cloud Storage > Storage Object Viewer(这个角色仅允许读取存储桶里的对象,刚好满足AutoML的需求)
- 点击保存,权限会立即生效
方式二:通过gcloud命令行操作
执行以下命令(替换PROJECT_NUMBER和YOUR_BUCKET_NAME为实际值):
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-automl.iam.gserviceaccount.com:roles/storage.objectViewer gs://YOUR_BUCKET_NAME
额外说明
为什么新建存储桶也会碰到同样问题?因为GCP不会自动给AutoML服务账号授予所有新存储桶的权限,每个存储桶都需要手动配置。如果需要给多个存储桶批量授权,可以在命令行里用通配符(比如gs://your-bucket-*)。
如果后续还有权限问题,可以检查一下服务账号是否正确,或者是否给了足够的权限——Storage Object Viewer是最贴合需求的,不要给过高权限哦。
内容的提问来源于stack exchange,提问作者LearnToGrow
相关产品推荐
相关产品推荐

