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}}
最後に
特にありません。