iMind Developers Blog

iMind開発者ブログ

serverless frameworkでコンテナで動くLambdaの登録

概要

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, 記事投稿