2014年03月16日

ローカル環境に本番データをリストア

Google App Engine の本番のデータをフルダンプして、ローカル環境(テスト環境)で使ってみようとしたところ、かなりはまってしまいました。。。
ローカル環境は、MacOS の Google App Engine です。

フルダンプ(バックアップ)自体は簡単で、
appcfg.py download_data 
 --url=http://xxx.appspot.com/_ah/remote_api 
 --filename=fulldump
とするだけ。※長いので折り返していますが、コマンド行では一行で書く必要があります。
格納されているデータの量に依存しますが、そこそこ時間はかかります。
Datastore Read Operationsがかなり上がるので、数多くのアクセスがあるサイトは要注意です。

はまったのはローカル環境へのアップロード。
正解は、まず
sudo appcfg.py upload_data 
 --url=http://localhost:8080/_ah/remote_api 
 --filename=fulldump  
 --application=dev~xxx
とすること。--application の appid の指定で dev~をつける必要があります。
dev~ なしの appid を指定すると、
google.appengine.api.datastore_errors.BadRequestError: app "dev~xxx" cannot access app "xxx"'s data
というエラーになってしまいます。

さらに重要なのが、Email の入力できちんと @gmail.com まで入れるということです。
そうしないと
[ERROR   ] Exception during authentication
Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 3469, in Run
    self.request_manager.Authenticate()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/bulkloader.py", line 1332, in Authenticate
    remote_api_stub.MaybeInvokeAuthentication()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 740, in MaybeInvokeAuthentication
    datastore_stub._server.Send(datastore_stub._path, payload=None)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 423, in Send
    self._Authenticate()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 564, in _Authenticate
    super(HttpRpcServer, self)._Authenticate()
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 360, in _Authenticate
    self._GetAuthCookie(auth_token)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 293, in _GetAuthCookie
    response.headers, response.fp)
HTTPError: HTTP Error 200: OK
[ERROR   ] Authentication Failed: Incorrect credentials or unsupported authentication type (e.g. OpenId).
というエラーが表示されてうまくいきません。

分かってしまえば簡単なことなのですが、かなりはまってしまい、
を参考に、Charles Proxy app などをインストールしたりしてしまいました。。。
言うまでもなく、Charles Proxy app をインストールしてもうまくはいきませんのでご注意を。

ラベル:GAE appcfg.py
posted by おちエン at 05:34| Comment(0) | GAE | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。