我正在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/