Cloud ML Service帐户无法访问云存储,并且未在IAM和管理面板中列出

fre*_*ris 8 google-cloud-platform google-cloud-ml

使用该命令创建ML Engine Model的新版本时

gcloud ml-engine versions create 'v1' --model=model_name --origin=gs://path_to_model/1/ --runtime-version=1.4
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: (gcloud.ml-engine.versions.create) FAILED_PRECONDITION: Field: version.deployment_uri Error: Read permissions are required for Cloud ML service account cloud-ml-service@**********.iam.gserviceaccount.com to the model file gs://path_to_model/1/saved_model.pb.
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: Read permissions are required for Cloud ML service account cloud-ml-service@**********.iam.gserviceaccount.com to the model file gs://path_to_model/1/saved_model.pb.
  field: version.deployment_uri
Run Code Online (Sandbox Code Playgroud)

此服务帐户未在IAM和管理面板中列出,并且不属于我的项目,因此我不想手动为此帐户授予权限.

有没有其他人也经历过这个?关于我应该做什么的任何建议?

附加信息:

  • 谷歌存储桶具有存储类regional和位置europe-west1.

  • 我已经尝试使用该命令禁用(并重新启用)ML Engine服务

    gcloud services disable ml.googleapis.com
    
    Run Code Online (Sandbox Code Playgroud)

    但是这导致了以下错误:

    ERROR: (gcloud.services.disable) The operation with ID tmo-acf.********-****-****-****-************ resulted in a failure.
    
    Run Code Online (Sandbox Code Playgroud)

更新的信息:

  • 存储桶不属于其他项目.

  • 命令

    gcloud iam service-accounts get-iam-policy cloud-ml-service@**********.iam.gserviceaccount.com
    
    Run Code Online (Sandbox Code Playgroud)

    给出错误:

    ERROR: (gcloud.iam.service-accounts.get-iam-policy) PERMISSION_DENIED: Permission iam.serviceAccounts.getIamPolicy is required to perform this operation on service account projects/-/serviceAccounts/cloud-ml-service@**********.iam.gserviceaccount.com.
    
    Run Code Online (Sandbox Code Playgroud)

    projects/-/serviceAccounts/...此错误消息中的路径中的破折号对我来说似乎非常错误.

问题已经解决

删除所有模型后,我终于能够禁用ML Engine服务.重新启用该服务后,我获得了一个新的服务帐户,该帐户显示在我的IAM和管理面板中,并且能够访问我的云存储.

Wil*_*uks 5

如果有人发现这个问题,@freeCris 在问题中写了解决方案。当我阅读答案中的所有文档时发现没有任何有用的东西,然后意识到他在问题本身中写了如何解决它时,我决定写下来。

对于那些想要解决此问题的人,只需运行(确保 ML Engine 中没有模型和版本等资源):

gcloud services disable ml.googleapis.com
Run Code Online (Sandbox Code Playgroud)

然后运行:

gcloud services enable ml.googleapis.com
Run Code Online (Sandbox Code Playgroud)

您将获得一个新的服务账户,这次该账户将列在您的 IAM 控制台中。只需将其添加到您的 GCS 存储桶中即可开始工作。