GAE Python
google app engine python版を想定。
memoを書いておく。 年に数回トラフィックがスパイクする申し込みサイトを移行したい。楽になりたい。
これを一通りやるのが良いと思ってる。
ファイル構成(app.yaml, jinja2を使うhtml, main.pyなど)
Datastore(client library使用),
認証、access tokenの使い方(client側に保存、server側でclaims, claimsからemailの取り出し)
Datastore向けのindex.yamlの作成
ancestorの理解
@202008
Python2での例だけど、ndbを使わずにやる点を除けば、ほぼPython3でも利用可能に思える。
cloud datastoreのlibraryがあるので、それを使う
front側で、firebaseのauthのuser tokenを含めて投げて、ユーザー判別(認証)してそれに即したデータの操作、レスポンスを返す
python(backend)側は、jsonを返すことに専念?する
logging
方法として3つ
python logging
Cloud logging Handler
セキュリティ対策
全般
Flaskの利用が前提だけど、response headerに設定するものが参考になる。
bodyを返すものは、再度受け取って、responseを作り直し response = flask.make_response(data)
csrf対策
flask
WTFormsで、app.secret_keyに値を入れる
webapp2
decoratorにしてある。
session機能があるので、それをつかってやるのもありかも。
tutorial
以下から、cloud shell 経由でやるのが、一番効率良さそう。
thirdparty系?
ローカル開発環境
$ python2.7 ~/google-cloud-sdk/bin/dev_appserver.py --enable_console=yes --support_datastore_emulator=yes ./
いまのところ、こんな感じで動かしてる。
datastoreのデータは、本番(cloud)にあるものを使いたいが、、
これは、なぜかエラーがでて、使えない。
gcloud version -> 208.0.2で解消???
これがよさそう。
認証は上記で解決する。変数に意味とか分かってないが....
remote apiを使う
本番環境
stackdriverで、本場環境を動かしながら、デバッグ(スタックトレースとか、変数を見る)ができる。
便利そうだけど、、まずはローカルの環境を整えないと。
ログとったりとかは、勝手にやってくれそうなのは良い。
serviceの使い分けとか、versionの切り替えとかは、おいおい勉強。
データ
#Datastore を今のところ想定。 cloud sqlは以前つかったことがあるので、こちらに逃げることも頭にはあるが、、、 運用コストは、長い目でみると、 datastoreのがいいかなと。
参考例
CRUDの実例がある。
運用
最初に表示させるデータは、spreadsheetからdatastoreに移すのは、colaboratoryで確認済み。
運用時には pythonファイルにすれば、良い。 簡単なものなので、これくらいでよい。 自動で更新できて、確認できることが大切
更新頻度の低いものは、こちらに入れればよいかな。
総トランザクション件数をもちたい場合は、トランザクション後に、key_only()で件数を取得して、memcacheに入れる?
domain
独自サイトで、SSLで運用できるのは確認済み。
app engineのリージョンが、初期設定から動かせないのは頭にいれておく。海外でも大した問題はないと想定してるけど。
参考
よむと全体像がつかめそう。
公式docは、都合の悪いことはかかないので、外部の視点の記事が大事。