Как исправить ошибку: для этой услуги требуется идентификатор проекта, но не может быть определен
Я пытаюсь вставить данные в Google Datastore из AppEngine и получаю сообщение об ошибке:
java.lang.IllegalArgumentException: A project ID is required for this service but could not be determined from the builder or the environment. Please set a project ID using the builder.
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
at com.google.cloud.ServiceOptions.<init>(ServiceOptions.java:324)
at com.google.cloud.datastore.DatastoreOptions.<init>(DatastoreOptions.java:85)
at com.google.cloud.datastore.DatastoreOptions.<init>(DatastoreOptions.java:32)
at com.google.cloud.datastore.DatastoreOptions$Builder.build(DatastoreOptions.java:75)
at com.google.cloud.datastore.DatastoreOptions.defaultInstance(DatastoreOptions.java:123)
Вот мой код:
Datastore datastore = DatastoreOptions.defaultInstance().service();
KeyFactory keyFactory = datastore.newKeyFactory().kind("keyKind");
Key key = keyFactory.newKey("keyName");
Entity entity = Entity.builder(key)
.set("name", "John Doe")
.set("age", 30)
.set("access_time", DateTime.now())
.build();
datastore.put(entity);
Как я могу исправить эту ошибку?
3 ответа
Решение
Вы используете стандарт AE или AE Flexible?
Убедитесь, что в вашем classpath есть api jar App Engine (каталог WEB-INF/lib).
В моем случае работает следующий код:
BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId("XXXXX")
.setCredentials(
ServiceAccountCredentials.fromStream(new FileInputStream("key.json"))
).build().getService();
Я установил идентификатор проекта в конструкторе.
Я мог бы решить эту проблему, установив следующую переменную среды для идентификатора проекта.
GCLOUD_PROJECT
если это не работает попробуйте
GCP_PROJECT
больше информации здесь https://cloud.google.com/functions/docs/configuring/env-var