DockerでLambdaのローカル開発環境を構築する

Docker, AWS01 December 2020

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!

tags: Docker, AWS