最近Google App Engineをちょっと触ってみたメモ
ごくたまにしかアクセスがないようなものだととても安くさばけるしいいのかなと思い調査してお試し。
以下基礎的な概要をつかむ上での参考。
料金まとめ
東京リージョン。
- Standard Environment
- 東京 $0.07/h
- スピンアップしてからシャットダウンまで最低15分
- 1日1時間(最低稼働時間15分x4回)の稼働の場合 $2.1/month
- Flexible Enviroment
- vCPU $0.0666/h
- メモリ $0.0089/h
- 永続ディスク $0.0520/month
- Google Cloud Datastore
- 小規模なら確実に無料で収まる
非常にたまにしかアクセスがないという前提があり、Flexibleはスピンアップに時間がかかることを考えるとStandard一択。
料金的にもFlexibleを使うならGAEにこだわる意味は薄い(と思う)
Flask
GAEはRubyも使えるようになっているがFlexibleになってしまうので今回想定する用途では微妙。
ということでPythonでSinatraっぽいものを探してFlask。
Bottleというものもあるが、よりテンプレート変数の渡し方がスマートなかんじなので好印象。
お試し
公式のドキュメントがよくできているので、それを読みつつ進めれば良い。
いちおう試したログ。
GAEでプロジェクト作成
公式のドキュメントからたどって適当に。
Pythonの準備
Macportsで入れた2.7で。
SDKのダウンロード
公式のドキュメントからたどって適当に。
サンプルアプリの準備
$ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
$ cp -rf python-docs-samples/appengine/standard/flask/hello_world try-gae-flask
$ cd try-gae-flask
app.yamlの確認
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
libraries:
- name: flask
version: 0.12
app.yamlのflaskのバージョンが0.12。世の最新が1.0.2ので書き換えてみたが、なんだか動かないので戻した。
デプロイ確認
GAE上でプロジェクトを作ってから。公式ドキュメント読めばできる。
$ gcloud app deploy
ローカルで開発環境の起動
$ dev_appserver.py app.yaml
=> http://localhost:8080/
main.pyの編集
Hello World部分を変えてみたりとか、ルーティング追加したりとか。
日本語を使うならmain.pyの頭にマジックコメントを追加。初歩ですか。そうですね。
# -*- coding: utf-8 -*-
ライブラリの追加
$ pip install requests_toolbelt -t lib
GAE側に用意されていないライブラリはlib以下に入れてデプロイ。
何かひとつ入れると芋づる式に色々入れないといけないので若干面倒で試行錯誤。
所感
少しやれそうだ。簡単なものにはよさそう。
ところで2.7のサポートは2020年までとのことだけど、そのあとStandard Environmentどうなるのという懸念はある。