docker-lambdaで簡単なLambda開発環境を構築
使ってみた時に調べたことをメモ。
前提
- Mac
- Docker version 17.03.1-ce, build c6d412e
- aws-cli/1.11.82 Python/3.6.1 Darwin/16.6.0 botocore/1.5.45
- こちらの記事を参考にデプロイパッケージ作成用のImageをmylambdaという名前で準備済み
- Python3.6のLambda環境を作るよ
手順
1. 新規作成Directory内に以下のファイルを作成する
- lambda_function.py
-
def lambda_handler(event, context):
がhandlerになる
-
- requirements.txt
# こんな感じ requests
- input.json
# こんな感じ { "key3": "value3", "key2": "value2", "key1": "value1" }
2. デプロイパッケージを作成する
$ docker run -v "$PWD":/var/task mylambda
実行するとdeploy_package.zipが作成される。
3. ローカルでFunctionを実行してみる
$ docker run -v "$PWD":/var/task lambci/lambda:python3.6 lambda_function.lambda_handler $(printf '%s' $(cat input.json))
すでにコンテナが存在する場合は
$ docker start -a [コンテナID]
Lambdaファンクションの実行結果が出力される。
4. AWS CLIを使ってlambdaにアップロードする
$ aws lambda create-function \ --role arn:aws:iam::[アカウントID]:role/lambda_basic_execution \ --runtime python3.6 \ --handler lambda_function.lambda_handler \ --zip-file fileb://./deploy_package.zip \ --region ap-northeast-1 --function-name MyTestFunction \
5. コードを更新する
aws lambda update-function-code \ --zip-file fileb://./deploy_package.zip \ --publish --function-name MyTestFunction \
まとめ
Dockerばり便利。