1

1つのプロジェクトでフレキシブル環境で動作しているので、com.google.cloud.datastore.Datastoreを使用して別のプロジェクトに書き込みたいと思います。フレキシブル環境は、別のプロジェクトのデータストアにアクセスするためにどのサービスアカウントを使用しますか?

「サービスアカウント」では、Flex環境でコードが実行されますか?どのようなアクセス許可が必要ですか?

コード:

Datastore ds = DatastoreOptions.builder().projectId("projectB").build().service(); 
ds.put(entity); 

スタックトレースパーミッションが間違っています。

com.google.cloud.datastore.DatastoreException: Missing or insufficient permissions. 
    at com.google.cloud.datastore.spi.DefaultDatastoreRpc.translate(DefaultDatastoreRpc.java:105) 
    at com.google.cloud.datastore.spi.DefaultDatastoreRpc.commit(DefaultDatastoreRpc.java:133) 
    at com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:390) 
    at com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:387) 
    at com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179) 
    at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244) 
    at com.google.cloud.datastore.DatastoreImpl.commit(DatastoreImpl.java:386) 
    at com.google.cloud.datastore.DatastoreImpl.commitMutation(DatastoreImpl.java:380) 
    at com.google.cloud.datastore.DatastoreImpl.put(DatastoreImpl.java:340) 

答えて

1

答えは:データストアの所有者権限

<source-project-name>@appspot.gserviceaccount.com 

にそれは人間が読める文字列プロジェクトだと注意、ない数値ID、上の他のサービスアカウントに見られるような[email protected]などのパターン。

関連する問題