Google App Engine 上で Python の軽量 Web フレームワークである Flask を使うためのチュートリアルです。
TL;DR
GAE For Python
とにかく、Flask を App Engine で使うためには App Engine の SDK をインストールしておく必要があります。
インストール
Download the Google App Engine SDK | App Engine Documentation | Google Cloud Platform
上のリンクにある Google App Engine SDK for Python からインストールすることができます。
Flask on GAE
上のリンクにもありますが、ディレクトリは下のようになります。
app |_ app.yaml |_ appengine_config.py |_ lib/ |_ main.py
Flask の準備
Flask を App Engine で使うためには Flask をロードしておく必要があります。そのため、ロードできるとうに Flask を lib というディレクトリの中にインストールしておきます。
mkdir lib pip install -t lib flask
ちなみに、GCP のリポジトリでは requirements.txt からインストールするようになっています。
# https://github.com/GoogleCloudPlatform/appengine-flask-skeleton の場合 pip install -r requirements.txt -t lib
この lib ディレクトリを App Engine の実行時にロードするために appengine_config.py へ下記の記述をします。
appengine_config.py
from google.appengine.ext import vendor # Third-party libraries are stored in "lib", vendoring will make # sure that they are importable by the application. vendor.add('lib')
App Engine
App Engine へのリクエストハンドラや静的ファイルへのパス・アプリケーションの設定を app.yaml に記述します。
app.yaml
runtime: python27 api_version: 1 threadsafe: yes # Handlers define how to route requests to your application. handlers: - url: .* script: main.app
ルーティング
main.py に Flask をインポートし、簡単なルーティングをします。
main.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): """Return a friendly HTTP greeting.""" return 'Hello World!' @app.errorhandler(404) def page_not_found(e): """Return a custom 404 error.""" return 'Sorry, Nothing at this URL.', 404 @app.errorhandler(500) def application_error(e): """Return a custom 500 error.""" return 'Sorry, unexpected error: {}'.format(e), 500
動作確認
App Engine の SDK にの中にある dev_appserver.py を使用して実行します。
dev_appserver.py .
※dev_appserver.py が実行できない場合、App Engine の SDK が PATH に通っていない可能性が高いです。
実行後、http://localhost:8080 を叩けば "Hello World!" の文字が確認できると思います。
# 動作確認 curl -XGET localhost:8080
デプロイ
デプロイするプロジェクトを GCP の管理画面にて作成し、Project ID を用意し、下記コマンドの [your-project-id]
に記述して実行してください。
appcfg.py update -A [your-project-id] -V v1 .
特にエラーがでなければ https://[your-project-id].appspot.com でアクセスすれば "Hello World!" が表示されていると思います。