[英]Google App Engine - Connect to remote datastore locally using Objectify
[英]Connect to Google App Engine Datastore
我正在嘗試從Java本地計算機連接到Google App Engine的數據存儲區。 我不會將該服務與GAE上的應用程序一起使用,它將在AWS上使用。
我嘗試了什么
我嘗試使用DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
,但我認為應用程序是在GAE上托管的。
現在,我使用系統變量GOOGLE_APPLICATION_CREDENTIALS獲取的json憑證文件啟動並運行Google存儲。 連接工作正常,所以我的猜測是我可能需要做類似於存儲的事情。 我為Storage做了類似的事情:
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客戶端庫 。 它建立在您當前使用的代碼之上,並且使得使用數據存儲區和存儲更容易,盡管文檔幾乎不存在(截至2016年4月)。
這是使用此庫連接到數據存儲區的方式:
AuthCredentials credentials = AuthCredentials.createFor(account, key);
DatastoreOptions options = DatastoreOptions.builder()
.authCredentials(credentials)
.projectId(projectId)
.namespace(NAMESPACE)
.build();
Datastore datastore = options.service();
與存儲相同,但使用StorageOptions。
提示:在GitHub中打開gcloud-java項目 - 該鏈接位於我之前引用的頁面上。 有一個文件夾,其中包含如何使用數據存儲和存儲的示例。
借助Andrei Volgin的大力幫助,我成功地從Google App Engine以外的應用程序連接到Datastore。 這是我在2016年4月所做的事情:
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")); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.