连接到 Google App Engine 数据存储区
Connect to Google App Engine Datastore
我正在尝试从 Java 中的本地计算机连接到 Google App Engine 的数据存储区。我不会将该服务与 GAE 上的应用程序一起使用,它将在 AWS 上使用。
我试过的
我试过使用
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
,但我认为它适用于在 GAE 上托管应用程序的情况。
现在,我有 Google 存储和 运行 使用 json 使用系统变量 GOOGLE_APPLICATION_CREDENTIALS[=30 获取的凭据文件=].连接工作正常,所以我猜我可能必须做一些类似于存储的事情。
我为存储做了这样的事情:
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = GoogleCredential.getApplicationDefault(transport, jsonFactory);
if (credential.createScopedRequired()) {
Collection<String> bigqueryScopes = StorageScopes.all();
credential = credential.createScoped(bigqueryScopes);
}
Storage client = new Storage.Builder(transport, jsonFactory, credential)
.setApplicationName("APPLICATION_NAME")
.build();
问题
所以我的问题是:如何从 Google App Engine 外部连接到 Google App Engine 数据存储?
感谢您的帮助!
我建议您移动到 gcloud-java client library。它建立在您当前使用的代码之上,使您可以更轻松地使用数据存储和存储,尽管文档几乎不存在(截至 2016 年 4 月)。
这是您使用此库连接到数据存储的方式:
AuthCredentials credentials = AuthCredentials.createFor(account, key);
DatastoreOptions options = DatastoreOptions.builder()
.authCredentials(credentials)
.projectId(projectId)
.namespace(NAMESPACE)
.build();
Datastore datastore = options.service();
与存储相同,但有存储选项。
提示:在 GitHub 中打开 gcloud-java 项目 - link 在我之前引用的页面上。有一个文件夹包含如何使用 Datastore 和 Storage 的示例。
在 Andrei Volgin 的大力帮助下,我成功地从 Google App Engine 之外的应用程序连接到 Datastore。这是我截至 2016 年 4 月所做的事情:
- 启用数据存储 API v1beta3。我在 App Engine 中的默认设置是 v1beta2。 https://console.cloud.google.com/apis/api/datastore.googleapis.com/overview?project=PROJECT_NAME
- 为激活数据存储的服务获取凭据文件。
- 您可以使用
GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
在系统变量中设置凭据文件
我写这段代码作为测试,连接正常
DatastoreOptions options = DatastoreOptions.builder()
.projectId("PROJECT_NAME")
.authCredentials(AuthCredentials.createForJson(
new FileInputStream("/PATH/TO/CREDENTIALS.json"))).build();
Datastore datastore = options.service();
Query<Entity> query =
Query.gqlQueryBuilder(Query.ResultType.ENTITY, "SELECT * FROM user").build();
QueryResults<Entity> results = datastore.run(query);
while (results.hasNext()) {
Entity result = results.next();
System.out.println(result.getString("id"));
}
我正在尝试从 Java 中的本地计算机连接到 Google App Engine 的数据存储区。我不会将该服务与 GAE 上的应用程序一起使用,它将在 AWS 上使用。
我试过的
我试过使用
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
,但我认为它适用于在 GAE 上托管应用程序的情况。
现在,我有 Google 存储和 运行 使用 json 使用系统变量 GOOGLE_APPLICATION_CREDENTIALS[=30 获取的凭据文件=].连接工作正常,所以我猜我可能必须做一些类似于存储的事情。 我为存储做了这样的事情:
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = GoogleCredential.getApplicationDefault(transport, jsonFactory);
if (credential.createScopedRequired()) {
Collection<String> bigqueryScopes = StorageScopes.all();
credential = credential.createScoped(bigqueryScopes);
}
Storage client = new Storage.Builder(transport, jsonFactory, credential)
.setApplicationName("APPLICATION_NAME")
.build();
问题
所以我的问题是:如何从 Google App Engine 外部连接到 Google App Engine 数据存储?
感谢您的帮助!
我建议您移动到 gcloud-java client library。它建立在您当前使用的代码之上,使您可以更轻松地使用数据存储和存储,尽管文档几乎不存在(截至 2016 年 4 月)。
这是您使用此库连接到数据存储的方式:
AuthCredentials credentials = AuthCredentials.createFor(account, key);
DatastoreOptions options = DatastoreOptions.builder()
.authCredentials(credentials)
.projectId(projectId)
.namespace(NAMESPACE)
.build();
Datastore datastore = options.service();
与存储相同,但有存储选项。
提示:在 GitHub 中打开 gcloud-java 项目 - link 在我之前引用的页面上。有一个文件夹包含如何使用 Datastore 和 Storage 的示例。
在 Andrei Volgin 的大力帮助下,我成功地从 Google App Engine 之外的应用程序连接到 Datastore。这是我截至 2016 年 4 月所做的事情:
- 启用数据存储 API v1beta3。我在 App Engine 中的默认设置是 v1beta2。 https://console.cloud.google.com/apis/api/datastore.googleapis.com/overview?project=PROJECT_NAME
- 为激活数据存储的服务获取凭据文件。
- 您可以使用
GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
在系统变量中设置凭据文件
我写这段代码作为测试,连接正常
DatastoreOptions options = DatastoreOptions.builder() .projectId("PROJECT_NAME") .authCredentials(AuthCredentials.createForJson( new FileInputStream("/PATH/TO/CREDENTIALS.json"))).build(); Datastore datastore = options.service(); Query<Entity> query = Query.gqlQueryBuilder(Query.ResultType.ENTITY, "SELECT * FROM user").build(); QueryResults<Entity> results = datastore.run(query); while (results.hasNext()) { Entity result = results.next(); System.out.println(result.getString("id")); }