2012/08/04

GAE/Jアプリのローカル・データストアのアップ・ダウンロード

Google App Engine SDK for Java を利用したアプリを開発している。
ユーザ認証をするときにGoogleアカウントを利用せず、データストアにユーザマスタを作成して行っている。

データのアップロード・ダウンロードにはGoogle App Engine SDK for Pythonで公開されているappcfg.pyとbulkloader.yamlを使った一括ローダーが一般的だろう。
データのアップロードとダウンロード

しかし、「開発用サーバーへのデータのロード」にローカル環境へのコマンドが記載されているが、同じようにやってもうまく行かず、結局イマイチよく分からなかった。これってpythonで作ったアプリに対してだけなのかな、って判断した。なので、マスタ登録用のロジックを組んで・・・って感じで登録を行っていた。

これが相当面倒・・・
できれば、ユーザマスタとか他のマスタデータをエクセルやCSVファイルとかで用意して、ローカル環境で動作確認をしたかった。

色々調べたり、試してみたりしていたところ、
httplib.BadStatusLine
という例外が発生していた。

これを調べてみるとProxy設定の記事にたどり着いた。

おや?

会社からGAE環境にアップするときには、会社のProxy設定をしている。
ということは??ローカルURLでProxy設定を行うのか?????

やってみよう!!

ということで、やってみた。

・・・

・・・・・・

でけたーーーーーーーーー!


という事で、データアップロードの手順とかまとめる。
諸々のインストールとかEclipseからGAE/JでWebApplicationとして実行できるとか、yamlファイルを作成と編集とか、そこらへんは割愛!

  • 設定内容
    • OS:Windows
    • ポート番号:8888
    • リモートAPIのパス:http://localhost:8888/remote_api
    • アップするデータファイル:CSVファイル

  1. Google App Engine for Pythonにパスを通す
    set PATH=%PATH%;appEnginePython¥bin
  2. Proxy設定を行う
    set HTTP_PROXY=http://localhost:8888
    set HTTPS_PROXY=http://localhost:8888
  3. Eclipseで該当のアプリを起動
  4. アップロードコマンドの実行!
    appcfg.py upload_data
    --filename=xxxxx.csv
    --config_file=bulkloader.yaml
    --url=http://localhost:8888/remote_api
    --kind=xxxx
    -v --no_cookies --email=test@example.com --passin
  5. メールアドレスのパスワードの入力が求められるので、入力

上記手順でローカル環境へのアップロードが完了する!(はず・・・)

ちなみに、プロキシはEclipseの起動オプションで設定したものを、メールアドレスとパスワードは何でもOKです。
ポイントはアップロードコマンドにアプリケーションIDを指定するオプションを使用しないこと。

理由は分からないけど、アプリケーションIDを指定してしまうと、データが行方不明になりましたw

ダウンロードも同様の設定でできた〜