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)
4

1 回答 1

1

答案是:数据存储所有者权限

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

请注意,这是人类可读的字符串项目名称而不是数字 ID,如在999999999999@developer.gserviceaccount.com等模式的其他服务帐户中找到的。

于 2016-11-02T09:11:19.473 回答