DockerのLambda関数実行用のイメージ、docker-lambdaを使ってローカル開発環境を構築します!
ちなみに、今回使用するLambda関数の言語はNodejsです。 (他の言語でも基本手順は同様なので参考にしてみて下さい)
index.jsとinput.jsonを作成
作業ディレクトリに移動し、以下の内容でindex.jsとinput.jsonを作成します。
index.js | lambda関数 |
input.json | 関数に渡すjson |
index.js
exports.handler = async function(event, context) {
console.log("EVENT: \n" + JSON.stringify(event, null, 2))
return context.logStreamName
}
input.json
{"test: "test}
実行
以下のコマンドで実行して下さい。
docker run --rm -v "$PWD":/var/task lambci/lambda:nodejs10.x index.handler $(printf '%s' $(cat input.json))
$(printf '%s' $(cat input.json))の部分はファイル内のjsonを文字列化しているだけなので、直接コマンド引数にjson形式で渡してもOKです。(公式のサンプルはこっち)
"$PWD" | 上記ファイルの場所 |
nodejs10.x | ランタイム |
index.handler | ファイル名.関数名 |
Layersを使用したい時
最後に、LambdaのLayersを使用したい時の方法も記載しておきます。 Layersは、ディレクトリ構成上以下のディレクトリにて管理されています。
/opt/nodejs/node_modules/
なので、上記パスに自身のローカルに配置したLayersのファイルをマウントしてあげればOKです。 ちなみに、通常のnpmでインストールしたモジュールも/opt/nodejs/node_modules/に配置すればOK!