Flexible Environment 使用什么服务帐户访问另一个项目中的 Datastore?
What service account does Flexible Environment use to access Datastore in another project?
运行 在一个项目的灵活环境中,我想使用 com.google.cloud.datastore.Datastore 写入另一个项目。
Flex 环境中 "service account" 代码 运行 在什么下?需要什么权限?
代码:
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.call(DatastoreImpl.java:390)
at com.google.cloud.datastore.DatastoreImpl.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)
答案是:数据存储所有者权限
<source-project-name>@appspot.gserviceaccount.com
请注意,这是人类可读的字符串项目 名称,不是数字 ID,就像在其他服务帐户中找到的一样999999999999@developer.gserviceaccount.com 等的模式。
运行 在一个项目的灵活环境中,我想使用 com.google.cloud.datastore.Datastore 写入另一个项目。
Flex 环境中 "service account" 代码 运行 在什么下?需要什么权限?
代码:
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.call(DatastoreImpl.java:390)
at com.google.cloud.datastore.DatastoreImpl.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)
答案是:数据存储所有者权限
<source-project-name>@appspot.gserviceaccount.com
请注意,这是人类可读的字符串项目 名称,不是数字 ID,就像在其他服务帐户中找到的一样999999999999@developer.gserviceaccount.com 等的模式。