1

GCE で実行されるアプリケーションを作成しており、https: //code.google.com/p/google-api-go-client/ の google-api-go-client を使用して GCS にデータを保存しています。

GCEアプリケーションが通信するGAEアプリケーションも実行しています。

GCE アプリケーションをローカルで実行し、稼働中の GCS サーバーと通信してファイルを保存し、取得することができます。

現在、テスト環境を実行できるように、ファイルを GCS にローカルに保存しようとしています。

devappserver が blobstore を介した GCS のシミュレートをサポートしていることがわかります。ただし、GCE アプリケーションを GCS ストレージのローカル devappserver に向ける方法がわかりません。

GAE アプリケーションで「goapp serve」を介して devappserver を実行しています。

ベースパスを設定しようとしましたが、devappserver から 500 エラーが発生しました。

service, err := storage.New(httpClient)
service.BasePath = "http://localhost:8080/_ah/gcs/"

結果は

ERROR    2014-10-23 19:14:08,692 module.py:727] Request to '/_ah/gcs/b/default/o/6051711999279104' failed
Traceback (most recent call last):
  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/module.py", line 723, in _handle_request
    return handler.handle(match, environ, wrapped_start_response)
  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/wsgi_handler.py", line 59, in handle
    return self._wsgi_app(environ, start_response)
  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/gcs_server.py", line 56, in __call__
    status_message = httplib.responses.get(e.args[1], '')
IndexError: tuple index out of range
INFO     2014-10-23 19:14:08,693 module.py:652] default: "GET /_ah/gcs/b/default/o/6051711999279104?alt=json HTTP/1.1" 500 -

ブラウザでこの URL にアクセスできます

http://localhost:8080/_ah/gcs/bucket

XML の結果を取得します。

<ListBucketResult xmlns="http://doc.s3.amazonaws.com/2006-03-01">
    <IsTruncated>False</IsTruncated>
</ListBucketResult>

GCS をローカルで使用することに関する投稿をいくつか見ましたが、正しく動作していないようです。ここで私が間違っていることはありますか?または、devappserver は GCS をサポートしていませんか、それともサポートしていない json API だけですか?

4

1 に答える 1

2

Google Cloud Storage JSON API へのアクセスに使用できる Go 用の汎用 Google API クライアントである「Google APIs Client Library for Go」と App Engine の「Google Cloud Storage Go Client」は、Google Cloud Storage を利用したい App Engine ユーザー向けのクライアント ライブラリです。

JSON と XML の 2 つの Google Cloud Storage API があります。汎用の Google API クライアント ライブラリは、JSON API と互換性があります。App Engine Google Cloud Storage Go Client は XML API を話します。

App Engine クライアント ライブラリは、ローカル操作を完全にサポートしています。これは、クライアント ライブラリが使用する Google Cloud Storage XML API のローカル実装を提供することによって実現されます。残念ながら、XML API のみがローカルに存在するため、App Engine クライアント ライブラリのみがローカルで動作します。XML API は受信する JSON API 要求を理解しないため、他のクライアントをそれに向けることは失敗します。

最適な 2 つのオプションは、次のいずれかを実行することです。

  1. App Engine 用のGoogle Cloud Storage Go クライアント ライブラリを使用します。ダウンロード手順はこちら.
  2. ローカル実装を使用する代わりに、実際の G​​oogle Cloud Storage とテスト バケットを使用します。
于 2014-10-23T20:44:18.587 に答える