2016-04-02 18 views
1

JavaのローカルマシンからGoogle App EngineのDatastoreに接続しようとしています。私はGAEのアプリケーションでこのサービスを使用することはしません。それはAWS上にあります。私は DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();を使用してみましたが、私はそれは、アプリケーションがGAE上でホストされているときのためだと思うGoogle App Engine Datastoreに接続

を試してみました何

現時点では、システム変数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のデータストアに接続できますか?

ありがとうございました!

答えて

3

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(); 

同じですが、StorageOptionsと、:あなたはこのライブラリを使用してデータストアに接続する方法

はこれがあります。

ヒント:GitHubでgcloud-javaプロジェクトを開きます。このリンクは、以前に参照したページにあります。データストアとストレージを使用する方法の例を含むフォルダがあります。

+0

を働い設定することができます迅速な答えをありがとうございました!プロジェクトが管理していますが、今回は別のエラーが表示され、プロジェクトでAPIが有効になっていないことがわかりました:クラウドデータストアAPIがプロジェクトで有効になっていませんPROJECT_NAME wierdは、 api console:[link](https://console.cloud.google.com/apis/library?) 他に何かをしなければならないかどうか知っていますか? ありがとうございます! – madube94

+0

devの別のオプションは、 'export GOOGLE_APPLICATION_CREDENTIALS =/path/to/key.json'などのクラウドコンソールの認証情報タブから生成されたサービスアカウントjsonを指し示す' GOOGLE_APPLICATION_CREDENTIALS'環境変数を使用することです –

+0

問題をオープンしました: https://github.com/GoogleCloudPlatform/gcloud-java/issues/843 –

0

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
  • Datastoreが有効になっているサービスの資格情報ファイルを取得します。
  • あなたは資格情報が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")); 
    } 
    
関連する問題