LoginSignup
3
3

More than 5 years have passed since last update.

GAEのDatastoreで、リモートのデータをローカルに持ってくる

Posted at

2のローカルへのアップロードでの認証のところ、下記のエラーで躓いたのでメモ。

Error 401: --- begin server output ---
You must be logged in as an administrator to access this.

1. リモートからデータを取得する

app.yamlに下記のコードを追加し、remote_apiが使えるようにする。

builtins:
- remote_api: on

追加してdeployしたら、terminalで下記のコードを実行して、欲しいエンティティのデータを取得する。

$ appcfg.py download_data --kind=<エンティティ> --url=http://<APPのID>.appspot.com/_ah/remote_api --filename=<エンティティ名でもなんでも>.dump

2. ローカルサーバへのデータのアップロード

ローカルへのアップロードは、GoogleのOAuthと関係ないので、このままアップロードすると、認証エラーになる。

そのためappengine_config.pyに下記のコードを追加して、ローカルの場合の認証を回避させる。

if os.environ.get('SERVER_SOFTWARE','').startswith('Development'):
    remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = (
    'REMOTE_ADDR', ['127.0.0.1'])

その後、ダウンロードしたファイルをローカルのデータストアにアップしてめでたくローカルへのコピーが完了する。

$ appcfg.py upload_data --url=http://127.0.0.1:8080/_ah/remote_api --application=`dev~<APPのID>` --filename=<1でダウンロードしたファイル名>.dump --num_threads=5

の前に、"dev~"を入れるの忘れずにね。ローカルだとIDに入るので。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3