2011年3月11日金曜日

Google App Engine データ削除とDatastore Admin について②

前回 に引き続いて、異常データの削除と Datastore Admin について書いていきたい。

GoogleAppEngineの管理画面に Datastore Admin のメニューがあるのでクリックしてみる(下)。


何も設定していない状態だとメッセージが表示されている。内容は、アプリケーションで Datastore Admin を利用するときは app.yaml ファイルに次の記述を追加する必要がある、といったものだ。
builtins:
- datastore_admin: on

さっそく記述を追加して、ソースをアップロードする。

通常はこれで使えるはずだ。しかし管理画面で Datastore Admin を開くと、画面が空白で何も表示されない。



いろいろ調べたところ、認証関係の設定で起きる現象のようだ。

そのうち記事にする予定なのだが、GoogleAppEngine のAPIで OpenID 認証が提供されるようになった。サービスを利用するためには、管理画面の認証オプションを、Federated Login に設定する必要がある。この設定が影響しているようだ。

その証拠に app.yaml のURLパターンの /_ah/login_required に認証用プログラムを割り当てていると、 Datastore Admin 画面でそのプログラム画面が表示されるようになる。ただ OpenID用の認証プログラムでサインインしたら Datastore Admin が使えるようなるわけではない。このため Datastore Admin を利用するときは、認証関係の設定を元に戻しておく必要がある。

それでは設定を元に戻してみる。管理画面の Application Settings 画面を開き、Authentication Options を Google Accounts API に変更して Save Settings ボタンを押す。



これでもう一度、Datastore Admin メニューを選択すると Datastore Admin が表示されている!。



さて本題の異常データーの削除であるが、Datastore Admin の画面で削除したい Kind を選択してから Delete ボタンを押せば Kind まるごと削除できる。

この方法が正しいのかは判断はできない。もっと良いやり方があるような気もする。しかしデータ異常で困ったときは、Datastore Admin を使えば何とかなるようだ。その場合、認証関係の設定に注意してくださいというのが、この記事の結論となる。