lambda-uploaderの記事を書きましたが続いてchaliceのご紹介を。
chalice
chaliceはAWS謹製のツールで、非常に簡単にLambda + API Gatewayをデプロイできるすぐれものです。
https://chalice.readthedocs.io/en/latest/
インストール〜デプロイ
公式サイトにも記述がありますが、
$ pip install chalice
$ chalice new-project helloworld && cd helloworld
$ chalice deploy
たったこれだけでLambda + API Gatewayのデプロイをしてくれます。
デプロイが完了すると以下のように生成されたエンドポイントをガイドしてくれます。
Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
- Lambda ARN: arn:aws:lambda:ap-northeast-1:000000000:function:helloworld-dev
- Rest API URL: https://000000.execute-api.ap-northeast-1.amazonaws.com/api/
Flaskをベースに作られているので、Flaskに馴染みのある方であればすぐにご利用いただけるかと。また、以下のコマンドを実行するとローカルでサービス起動できるので、デプロイ前のローカルテストもできます。
chalice local
Lambdaの設定カスタマイズ
chaliceを使ってデプロイするとIAMロール作成など必要な設定を自動で実行してくれます。ただ、運用によっては困るケースもありますよね。以下の設定ファイル(config.json)をカスタマイズすることで手動で指定することもできます。
$ tree -a
.
├── .chalice
│ └── config.json
├── app.py
└── requirements.txt
例えば、既存のIAMロールを指定したい場合などは以下のように設定します。
{
"version": "2.0",
"app_name": "app",
"stages": {
"dev": {
"autogen_policy": true,
"api_gateway_stage": "dev"
},
"beta": {
"autogen_policy": false,
"iam_policy_file": "beta-app-policy.json"
},
"prod": {
"manage_iam_role": false,
"iam_role_arn": "arn:aws:iam::...:role/prod-role"
}
}
}
上の例では、3つのステージ(dev, beta, prod)を指定しています。devステージはポリシーを自動生成します。betaステージは設定ファイル(.chalice/beta-app-policy.json)をロードし、IAMロールとの関連付けを行います。prodステージは、IAMロールの変更はされません。Lambda関数に指定されたロール(arn:aws:iam::...:role/prod-role)の設定のみを行います。
詳細は公式を参照してくださいませ。
スケジュール、SNS、SQS、S3イベント
chaliceは、API Gateway以外にもスケジュール、SNS、SQS、S3イベントの設定もサポートしています。サーバーレス構成のバリエーションが広がりますね。
https://chalice.readthedocs.io/en/latest/topics/events.html#
まとめ
最高ですね。
ただ、このツールがサポートしているのはpythonのみです。サーバーレス環境のバックエンドをpythonで手軽に書きたい方にはオススメです。お試しいかがでしょうか?