4

現在、AppEngine と GCE を組み合わせたアプリを実行しており、これまでのところ、すべてのデータストアへのアクセスを AppEngine 側に保持しています。現在、GCE インスタンスが (共有) データストアにいくつかのクエリを実行できるようにすることも検討しています。まず、ローカルで実行する方法を見つけようとしています。これまでのところ:

  • 実行中の Go devappserver
  • devappserver データストアにクエリを発行する Go スタンドアロン バイナリ。
  • 直接 HTTP 呼び出しを発行する代わりに API を使用できるように、google-api-go-client/datastore/v1beta2 をインストール (「go get」) しました。ただし、この API ライブラリが開発中に機能しない場合は、直接 HTTP 呼び出しを発行しても構いません。
  • サービス アカウントが設定されています (既に GCE から GCS にアクセスしています) が、ローカルでの実行に関係があるとは思えません...

いくつかのドキュメントを見たことがありますが、(a) Python と Java についてのみ話し、(b) AppEngine の devappserver に埋め込まれたデータストアとは対照的に、(スタンドアロン) 開発データストア サーバーへの接続について説明しています (それらが異なる場合)。 . ここ StackOverflow には次の回答もありますが、ここでもスタンドアロン開発データストア サーバーへの接続について説明しています。

ローカルの Google クラウド データストア db に接続するには?

どんなポインタでも大歓迎です!

  • イアン
4

2 に答える 2

4

現在、いくつかの理由により、これは開発環境では不可能です。Google Cloud Datastore ツール ( gcd.sh ) は Java 開発サーバーを使用します。ただし、App Engine 用に開発する場合は、別の基盤となるストレージを持つ Python 開発サーバーを使用します。この問題を追跡するバグがgithub ページにあります。

go で Google Cloud Datastore アプリケーションを開発することはできますが、現在の go クライアント ライブラリには多くのバグがあります。残念ながら、開発サーバーは現在、go ライブラリが使用する JSON API をサポートしていません (ページ上部の注を参照してください)。

更新: proppy のコメントが回答の一部として表示されるようにしたかったのです。彼の提案は、API のプロトコル バージョンを使用する方法を提供します。これは、おそらく上記の go クライアント ライブラリよりも安定しています。gcd.shツールを使用して、開発サーバーでこれをテストすることもできます。ただし、HTTP リクエストは自分で作成する必要があり、アプリケーションと開発中の Cloud Datastore の間でデータストア内のデータを共有することはできません。ただし、これは間違いなく優れた回避策であり、Cloud Datastore API を使用できます。この API は、他の回避策よりも開発が容易になります。プロッピー より:

Go で Cloud Datastore Protobuf HTTP API を引き続き使用できることに注意してください。protobuf 定義は GitHub で入手できます。Go protobuf コンパイラ プラグインを使用して Go コードにコンパイルし、POST HTTP リクエストを に送信できます /datastore/{version}/datasets/{datasetId}/{method}

于 2014-02-18T21:08:46.280 に答える
0

「GO」アプリ サーバーからのユース ケースが単純な場合は、GAE サービスへの API 呼び出しを使用してアクセスを実装することをお勧めします (おそらく、サービスを拡張して API 呼び出しを受信します)。

これには、データストアの定義または関数が変更された場合に、1 か所で変更を加えるだけでよいという追加の利点があります。

于 2014-02-18T22:46:47.730 に答える