使用命令
创建ML Engine Model的新版本时gcloud ml-engine versions create 'v1' --model=model_name --origin=gs://path_to_model/1/ --runtime-version=1.4
我收到以下错误:
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
此服务帐户未列在IAM&管理面板并且不属于我的项目,因此我不想手动为此帐户授予权限。
还有其他人也经历过这个吗?关于我应该做什么的任何建议?
其他信息:
Google存储分区的存储分类为regional
,位置为europe-west1
。
我已尝试使用命令
禁用(并重新启用)ML Engine服务gcloud services disable ml.googleapis.com
但是这导致了以下错误:
ERROR: (gcloud.services.disable) The operation with ID tmo-acf.********-****-****-****-************ resulted in a failure.
更新信息:
存储桶不属于其他项目。
命令
gcloud iam service-accounts get-iam-policy cloud-ml-service@**********.iam.gserviceaccount.com
给出错误:
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.
此错误消息中路径projects/-/serviceAccounts/...
中的破折号对我来说似乎非常错误。
问题已解决
我删除了所有模型后终于能够禁用ML Engine服务了。重新启用该服务后,我获得了一个新的服务帐户,该帐户显示在我的IAM&管理面板,并能够访问我的云存储。
答案 0 :(得分:2)
如果有人发现此问题,@ freeCris在问题中写了解决方案。当我阅读答案中的所有文档时,我决定记下来,以至于找不到任何有用的东西,然后意识到他写了如何解决问题本身的方法。
对于那些想解决此问题的人,只需运行即可(确保ML Engine中没有模型和版本等资源)
gcloud services disable ml.googleapis.com
然后运行:
gcloud services enable ml.googleapis.com
您将获得一个新的服务帐户,这一次将在您的IAM控制台中列出。只需将其添加到您的GCS存储桶中,即可立即使用。
答案 1 :(得分:0)
是的,该服务帐户不属于您的项目。您可以知道Cloud ML Engine的服务帐户。要在ML Engine上进行部署,您需要将gcs上的模型文件的读访问权授予该服务帐户。以下是有关如何执行此操作的文档:https://cloud.google.com/ml-engine/docs/access-control#permissions_required_for_storage
答案 2 :(得分:0)
我认为问题是,您试图在另一个项目下创建模型,而该项目与您尝试达到的那个存储桶没有关联。因此,您使用了另一个项目的服务帐户来访问存储桶,这就是为什么它没有任何权限并且没有出现在AMI中的原因。
如果再次发生这种情况,或者其他人遇到该问题,则可以使用gcloud config set project <project name>
检查项目,并使用$FileIn = '.\file.csv'
$FileOut= '.\file2.csv'
$csv = Import-Csv $FileIn
$csv | Select-Object -First ($csv.count -1) |
Export-Csv $FileOut -NoTypeInformation
进行更改。