我正在Google ML Engine上运行TensorFlow模型。模型训练完成后,我想将包含结果的JSON字符串存储到数据存储区。为此,我正在使用以下内容:

from gcloud import datastore

def put_json_into_datastore(json_str, project_id, entity_type):
    """
    Store json string in Datastore
    """
    # Instantiate the client to the project
    datastore_client = datastore.Client(project_id)
    # The name/ID for the new entity
    name = str(datetime.datetime.now())
    # The Cloud Datastore key for the new entity
    entity_key = datastore_client.key(entity_type, name)
    # Prepare the new entity
    entity = datastore.Entity(key=entity_key)
    # Get the json string into the entity
    entity.update(json_str)
    # Put the entity into Datastore
    datastore_client.put(entity)


虽然,但我收到错误消息“禁止:403请求的身份验证范围不足”。这是完整的错误跟踪:


  追溯(最近一次通话):文件
  _run_module_as_main中的“ /usr/lib/python2.7/runpy.py”,第162行
      “ main”,fname,loader,pkg_name)文件“ /usr/lib/python2.7/runpy.py”,第72行,在_run_code中
      run_globals文件“ /root/.local/lib/python2.7/site-packages/trainer/train.py”中的exec代码,第243行,
  在
      FLAGS.entity_type)文件“ /root/.local/lib/python2.7/site-packages/trainer/data_helpers.py”,
  第253行,位于put_json_into_datastore中
      datastore_client.put(entity)文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/client.py”,
  输入的第329行
      self.put_multi(entities = [entity])文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/client.py”,
  第355行,放在put_multi中
      current.commit()文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/batch.py​​”,
  第260行,提交中
      self._commit()文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/batch.py​​”,
  _commit中的第243行
      self.project,self._commit_request,self._id)文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/connection.py”,
  第342行,提交
      _datastore_pb2.CommitResponse)文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/connection.py”,
  _rpc中的第124行
      data = request_pb.SerializeToString())文件“ /usr/local/lib/python2.7/dist-packages/gcloud/datastore/connection.py”,
  _request中的第98行
      引发make_exception(headers,error_status.message,use_json = False)禁止:403请求认证不足
  范围。


我是否需要授予访问权限,以便ML引擎访问数据存储区?

最佳答案

Cloud ML服务的执行权限不足以访问数据存储区。解决此问题的一种方法是上传可访问Cloud Datastore的服务帐户的凭据(例如json服务帐户密钥文件)。然后,您可以使用它来获取能够访问数据存储的凭据。

关于python - Google ML Engine和Python数据存储区API,“禁止:403请求的验证范围不足”。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43952943/

10-12 22:17