Какую учетную запись службы использует гибкая среда для доступа к хранилищу данных в другом проекте?
Работая в гибкой среде в одном проекте, я хочу написать в другой проект, используя com.google.cloud.datastore.Datastore.
Под какой "учетной записью службы" выполняется код в среде Flex? Какие разрешения нужны?
Код:
Datastore ds = DatastoreOptions.builder().projectId("projectB").build().service();
ds.put(entity);
Stacktrace, когда разрешения неверны.
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
Обратите внимание, что это имя проекта, доступное для чтения человеком, а не числовой идентификатор, как указано в других учетных записях служб по шаблону 999999999999@developer.gserviceaccount.com и т.п.