概要
Lambdaがコンテナで動かせるようになったので使ってみる。
バージョン情報
- aws-cli/1.18.151
hello worldするコンテナ
最低限の構成で作ってみる。
app.py という名前でhello worldするhandlerを記述する。
def handler(event, context): return 'hello world'
app.handler を呼び出すDockerfileを作る。
FROM public.ecr.aws/lambda/python:3.8 COPY app.py ./ CMD ["app.handler"]
serverless.ymlの記述。これでDockerのイメージ作成からemrへの登録、Lambdaへの登録までやってくれる。
service: containerExample frameworkVersion: ">=1.23.0" provider: name: aws region: ap-northeast-1 ecr: images: containerExample: path: ./ functions: hello: image: name: containerExample
deploy
sls deploy
これでECRにイメージが登録され、S3にバケットが作られ、Lambdaの関数が登録される。便利。
removeすると登録時に生成されたECR、S3、Lambdaの内容が削除される。Cloud Watchのロググループもいなくなる。
sls remove
ローカルでのテスト
イメージの確認。
docker images
serverless-containerexample-dev というイメージができていたのでこれのコンテナIDを指定して叩いてみる。
docker run -p 9000:8080 ${コンテナID}
立ち上がったサーバーをcurlで叩く。
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
改定履歴
Author: Masato Watanabe, Date: 2021-07-18, 記事投稿