簡體   English   中英

連接到Google App Engine數據存儲區

[英]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月所做的事情:

  • 啟用Datastore 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")); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM