node_modules を含んだ AWS Lambda Layers を作成して Lambda 関数に追加する方法
- 2021 8/3
- カテゴリー : Amazon Web Services
- AWS Lambda . AWS Lambda Layers
- コメントを書く
node_modules を含んだ AWS Lambda Layers を作成して Lambda 関数に追加する方法をご紹介します。
背景 Lambda Layers に node_modules を追加したい
Lambda 関数から利用する node_modules を Lambda Layers に追加する方法を調べて検証しました。
AWS SDK for JavaScript を Node.js Lambda 関数に統合する
事例 Lambda Layers に aws-sdk を作成する手順
Lambda Layers に追加する zip ファイル作成
mkdir -p aws-sdk-layer/nodejs
cd aws-sdk-layer/nodejs
npm init
docker run --entrypoint "" \
-v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:14" \
/bin/sh -c "npm install aws-sdk --save; exit"
zip -r ../package.zip ../
Lambda Layers へ zip ファイルを deploy
aws lambda publish-layer-version \
--layer-name aws-sdk \
--description "aws-sdk layer" \
--license-info "MIT" \
--compatible-runtimes nodejs14.x \
--zip-file fileb://../package.zip \
--region ap-northeast-1
Lambda 関数に Lambda Layers を追加
aws lambda update-function-configuration \
--function-name your-lambda-function \
--layers arn:aws:lambda:ap-northeast-1:xxxxxx:layer:aws-sdk:1 \
--region ap-northeast-1
デフォルトの aws-sdk version との違い
- v2.880.0 : Lambda Layers の aws-sdk を利用し無い場合(デフォルト)
- v2.960.0 : Lambda Layers の aws-sdk を利用する場合
事例 Lambda Layers に @google-cloud/bigquery を作成する手順
Lambda Layers に追加する zip ファイル作成
mkdir -p google-cloud-bigquery-layer/nodejs
cd google-cloud-bigquery-layer/nodejs
docker run --entrypoint "" \
-v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:14" \
/bin/sh -c "npm install --save @google-cloud/bigquery; exit"
zip -r ../package.zip ../
Lambda Layers へ zip ファイルを deploy
aws lambda publish-layer-version \
--layer-name google-cloud-bigquery \
--description "@google-cloud/bigquery layer" \
--license-info "MIT" \
--compatible-runtimes nodejs14.x \
--zip-file fileb://../package.zip \
--region ap-northeast-1
Lambda 関数に Lambda Layers を追加
aws lambda update-function-configuration \
--function-name your-lambda-function \
--layers arn:aws:lambda:ap-northeast-1:xxxxxx:layer:google-cloud-bigquery:1 \
--region ap-northeast-1
以上、Lambda Layers に node_modules を追加して Lambda 関数から利用したい、現場からお送りしました。