AWS

【Lambda】ローカル docker Lambda環境構築

dockerを使用してローカルにLambda環境を構築します。
プログラミング言語は Node.js を使用します。

docker、aws lambdaの基本を知っている前提とします。
また、ローカルPCにはdockerがインストールされているものとします。

ディレクトリ構成

以下のようなディレクトリ構成とします。

02_sample_app
   -- index.js
03_platform
   -- docker-compose.yml

index.js、docker-compose.ymlを作成しLambda関数の簡単な動作を確認します。

docker-compose.yml

docker-compose.ymlの内容は以下の通りです。

version: '3.5'
services:

  sample_lambda:
    container_name: sample_lambda
    image: lambci/lambda:nodejs12.x
    tty: true
    volumes:
      - ../02_sample_app:/var/task
      - ./opt:/opt
    ports:
      - 9001:9001
    environment:
      DOCKER_LAMBDA_STAY_OPEN: 1
      DOCKER_LAMBDA_WATCH: 1
      DOCKER_LAMBDA_DEBUG: 1
      TZ: 'Asia/Tokyo'
    command: index.handler

container_nameは任意で変更して下さい。ポート番号も使用していないポート番号を指定して下さい。
volumes: に以下を指定しています。指定したディレクトリのindex.jsを呼び出すことになります。
environment: の説明は申し訳ございません。

index.js

eventの内容を表示するようにしました。

const aws = require("aws-sdk");

exports.handler = async (event, context) => {
    context.succeed({
        statusCode: 200,
        body      : event,
    });
};

呼び出し

以下のようにhttpリクエストを送信して確認が行えます。

curl -d '{"test":1}' http://localhost:9001/2015-03-31/functions/sample/invocations

呼び出すURLのパスについて以下を注意してください。

・functions まではお決まりです。固定となります。
・sample 部分は任意です。”sample”でなく “a” としても呼び出せます。ただし、ないと呼び出しの反応がありません。何か文字をつけて下さい。
・invocations はお決まりです。固定となります。

結果

以下のようなレスポンスが返却されます。

{"statusCode":200,"body":{"test":1}}

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.