PythonのAPIを作りたいと思って調べていたところ、Chaliceを見つけました。
今回はちょっとした備忘録記事です。
Chaliceは一言で言えば、AWSによるPythonのサーバーレスフレームワークです。
AWSからGitHubに公開されており、怪しい挙動はきっとあまりしないでしょう。
https://github.com/aws/chalice
ChaliceはデプロイするとApiGateway + lambdaを利用してサーバーレスに公開してくれます。
環境
- macOS Catalina 10.15.1
- python 3.6.4
- chalice 1.12.0
Chaliceのインストール
$ pip install chalice
$ chalice --version
AWS IAMの設定
ApiGatewayとlambdaの操作権限を持つユーザーから操作しないとデプロイできません。
今回は簡単にポリシー「AdministratorAccess」を与えたユーザーから操作させます。
本当ならより権限を絞って最低限の開発ユーザーで..(略)
IAMユーザ作成方法は以下を参考にしてください。
AWSアカウントでのIAMユーザの作成
ハマったポイント
app.pyと.chaliceフォルダ内にある「config.json」のapp_nameが一致している必要があります。
config.json "app_name": "hoge-api"
app.py app = Chalice(app_name='hoge-api')
一致していないとdeploy時、直接的な原因特定のしにくいエラーが吐き出されます。↓
❯ chalice deploy
...
(略)
...
botocore.exceptions.ConnectionClosedError: Connection was closed before we received a valid response from endpoint URL: "https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions".
参考
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
Chaliceのすゝめ AWSにWebApiをサーバーレスで構築する
Chaliceのすゝめ その2 WebApiに認証を追加する
How to create a thumbnail API service in 5 minutes