Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 403在谷歌云平台ML引擎中创建新版本时禁止_Google Cloud Platform_Google Cloud Ml_Google App Engine Python_App Engine Flexible - Fatal编程技术网

Google cloud platform 403在谷歌云平台ML引擎中创建新版本时禁止

Google cloud platform 403在谷歌云平台ML引擎中创建新版本时禁止,google-cloud-platform,google-cloud-ml,google-app-engine-python,app-engine-flexible,Google Cloud Platform,Google Cloud Ml,Google App Engine Python,App Engine Flexible,使用AppEngine flex中的Python Google API客户端库,我正在调用GCP ML引擎API。 当我列出不同的模型、获取它们的默认版本和所有“只读”操作时,它可以正常工作,但当我尝试为模型创建新版本时,它不起作用。我得到一个403禁止的错误,“访问模型被拒绝” 我用服务帐户打电话。在IAM中,我的服务帐户具有“ML引擎管理员”权限 这就是我打电话的方式 from google.oauth2.service_account import Credentials credent

使用AppEngine flex中的Python Google API客户端库,我正在调用GCP ML引擎API。 当我列出不同的模型、获取它们的默认版本和所有“只读”操作时,它可以正常工作,但当我尝试为模型创建新版本时,它不起作用。我得到一个403禁止的错误,“访问模型被拒绝”

我用服务帐户打电话。在IAM中,我的服务帐户具有“ML引擎管理员”权限

这就是我打电话的方式

from google.oauth2.service_account import Credentials

credentials = Credentials.from_service_account_file(PATH_TO_MY_JSON)
ml_client = discovery.build(u'ml', u'v1', credentials=credentials)

body = {
        u"name": version_name,
        u"description": description,
        u"runtimeVersion": current_default_version.get(u"runtimeVersion"),
        u"framework": current_default_version.get(u"framework"),
        u"pythonVersion": current_default_version.get(u"pythonVersion"),
        u"deploymentUri": deployment_uri
    }
request = ml_client.projects().models().versions().create(parent=get_query_name(model_name), body=body)
request.execute()
错误

 <HttpError 403 when requesting https://ml.googleapis.com/v1/projects/XXX/models/YYY/versions?alt=json returned "Access to model denied.">


这与服务帐户有关,因为当我在Cloud Shell中运行此代码并在没有凭据的情况下构建我的
ml\u客户端时(
ml\u client=discovery.build(u'ml',u'v1')
),它可以正常工作。

我的服务帐户IAM角色:

  • ML引擎开发人员
  • 存储对象查看器
对我来说,如果我通过UI创建了一个模型资源,那么我就无法从python客户端库创建模型版本。但是,如果我通过python客户机创建了一个模型资源,那么就创建一个模型版本,它可以正常工作

credentials = Credentials.from_service_account_file('./service_account.json')
ml = discovery.build('ml', 'v1', credentials=credentials)
request_dict = {
   'name': 'model_resource_name',
   'description': 'your_model_description'}

project_id = 'projects/{}'.format('YOUR_PROJECT_ID')
request = ml.projects().models().create(parent=project_id, body=request_dict)
request.execute()

body = {
   u"name": "test_version",
   u"description": "description",
   u"runtimeVersion": "1.13",
   u"framework": "TENSORFLOW",
   u"pythonVersion": "3.5",
   u"deploymentUri": "gs://BUCKET_ID/directory_path_to_your_model/"
        }

request = ml.projects().models().versions().create(
    parent='projects/{}/models/{}'.format(
          'YOUR_PROJECT_ID', 
          'model_resource'), 
    body=body)

response = request.execute()

仍在调查为什么通过UI创建的模型资源不允许python客户端创建模型版本

您是否
gcloud auth login
gcloud auth应用程序默认登录
?不确定这对部署的版本有何影响,但无论如何,我没有。可能是服务帐户没有读取存储桶的权限。即使帐户是Cloud ML管理员,部署/创建模型也需要存储权限,因为Cloud ML需要读取存储在此类存储桶中的培训文件。您能确认一下您是否已经按照文件中的说明进行了设置吗?