Python Serverless Microframework for AWS(Chalice)にローカルモードが追加され、開発しやすくなりました
こんにちは、藤本です。
本ブログでも何度か紹介しているChaliceですが、今月前半にバージョン 0.4.0 がリリースされ、ローカルモードが追加されました。
Chalice
Chalice については以下の過去記事をご参照ください。
【新機能】Python Serverless Microframework for AWS(プレビュー版)が登場!
ローカルモード
ローカルモードはAWSへデプロイせずにローカルでHTTPサーバを起動し、動作確認できる機能です。API Gateway、AWS Lambdaの動作をローカル環境で実行するようなイメージです。
バージョン 0.3.0 までは動作確認する都度、chalice deploy
コマンドを実行し、AWS Lambdaへソースコードをデプロイする必要がありました。更には、デプロイして動作確認したら、{"Code": "ChaliceViewError","Message": "ChaliceViewError: An internal server error occurred."}
だけ出て原因がよく分からない!ということがありました。
バージョン 0.4.0 からはサクッとローカル起動して、テストして、修正して、と手軽に開発サイクルが回しやすくなりました。
ただし、ローカル環境で動作するため、VPC内のリソース(特にプライベートIPしか持たせていないRDSやRedshift)と通信する構成の場合、EC2上で実行するなど工夫が必要です。EC2上で実行するならデプロイした方が早いかな。。
試してみた
それでは早速試してみましょう。
プロジェクト作成
プロジェクトを作成します。
# chalice --version chalice 0.4.0 # chalice new-project chalice040 # cd chalice040 # ls app.py requirements.txt
ソースコードはデフォルトで生成されるサンプルコードを利用しています。
app.py
from chalice import Chalice app = Chalice(app_name='chalice040') @app.route('/') def index(): return {'hello': 'world'} @app.route('/hello/{name}') def hello_name(name): return {'hello': name}
ローカルモード起動
ローカルモードで起動するにはサブコマンドでlocal
を指定するだけです。
# chalice local Serving on localhost:8000
これだけです。
localhost、8000ポートにバインドされ、HTTPサーバが起動します。
動作確認でWebリクエストを送信します。
/
で index 関数を呼び出し、/hello/classmethod
で hello_name 関数を呼び出します。
# curl localhost:8000/ {"hello": "world"} # curl localhost:8000/hello/classmethod {"hello": "classmethod"}
正常に結果が返ってきました。
ちなみにローカルモードが実装されていない 0.3.0 以前ではLocal Command
の出力が返ってくるだけでした。
# chalice --version chalice 0.3.0 # chalice local Local command
まとめ
いかがでしたでしょうか?
Chalice は Python のみと言語が限定されていますが、ソースコードの作りもシンプルで分かりやすいです。まだプレビュー版で本番環境での利用は非推奨ですが、機能追加のリリースペースも早く、今後も注目していきたいと思います。