0

私はGoogle MLエンジンでTensorFlowモデルを実行しています。モデルトレーニングが終了したら、結果を含むJSON文字列をDatastoreに保存します。このために、私は次のように使用しています:Google MLエンジンとPython Datastore API '禁止:403要求には認証スコープが不十分でした。'

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 "メイン"、fnameの中で、 "/usr/lib/python2.7/runpy.py"、ライン162ファイル:

トレースバック(最新の呼び出しの最後の):ここでは完全なエラー・トレースです、loader、pkg_name)ファイル "/usr/lib/python2.7/runpy.py"、行72、_run_code run_globalsファイルのexecコード "/root/.local/lib/python2.7/site-packages/trainer /train.py put_json_into_datastore datastore_clientで、 ライン253、 "/root/.local/lib/python2.7/site-packages/trainer/data_helpers.py」、 FLAGS.entity_typeでライン243、 )ファイル"。 put(エンティティ)ファイル "/usr/local/lib/python2.7/dist-packages/ gcloud/datastore/client.py "、 行329、put self.put_multi(エンティティ= [エンティティ])ファイル" /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​​"、 行243、_commit内 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 "、_request 上げmake_exceptionにライン124、_rpcに データ= request_pb.SerializeToString()) "/usr/local/lib/python2.7/dist-packages/gcloud/datastore/connection.py" ファイル、 ライン98、 (ヘッダー、error_status.message、use_json = False)禁止:403要求の認証が不十分でした スコープ。

データストアにアクセスするには、MLエンジンのどこかにアクセス権を与える必要がありますか?

+0

ダム質問ですが、確かに...同じプロジェクト内のデータストアとクラウドMLのエンジンジョブですか? –

+0

@ T.Okahara yap、同じプロジェクト。 MLエンジンからStorageにファイルを保存できますが、Datastoreにアクセスすることはできません。 –

答えて

2

クラウドMLサービスは、データストアにアクセスするのに十分なアクセス許可では実行されません。この問題を回避する方法の1つは、Cloud Datastoreにアクセスできるサービスアカウントの資格情報(例:jsonサービスアカウントキーファイル)をアップロードすることです。これを使用して、Datastoreにアクセスできる資格情報を取得できます。

関連する問題