前提
Lambda Functionが作成されていること。
ローカル環境にnpmがインストールされていること。
手順
必要な作業は下記
- 使いたいnpmライブラリをローカルにインストールしてzip化する
- Lambda Layerを1.のzipをもとに作成し、Lambda Functionと紐づける
- Lambda Functionのコード上からnpmライブラリを呼び出す
Lambda Layerとは
Lambdaレイヤーは、追加のコードまたはデータを含むことができる .zip ファイルアーカイブです。レイヤーには、ライブラリ、 カスタムランタイム 、データ、または設定ファイルを含めることができます。レイヤーを使用すると、コードの共有と責任の分離を促進し、ビジネスロジックの記述をより迅速に繰り返すことができます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
使いたいnpmライブラリをローカルにインストールしてzip化する
今回はnpmライブラリ「axios」で試してみる。
・ローカルの適当な場所で下記を実行
(npmライブラリが欲しいだけなので、プロジェクト名は適当でOK)
npm init
・npmライブラリをインストール
npm i axios
プロジェクトフォルダの「node_modules」フォルダをzip化する
Lambda Layerを1.のzipをもとに作成し、Lambda Functionと紐づける
・AWS Lambda の左ペイン上の「レイヤー」>「レイヤーの作成」を押下
適当なレイヤー名を付けて、zip化した「node_modules」をアップロードする。
ランタイムはzip化したパッケージに合わせる。今回で言うと「Node.js」を選択する。
・「Lambda」から関数を選択し、「関数の概要」ページに移動
画面下の「レイヤー」>「レイヤーの追加」 > 「カスタムレイヤー」でさっき作ったレイヤを選択し「追加」を押下
Lambda Functionのコード上からnpmライブラリを呼び出す
↓こんな感じでライブラリを利用できる。
const axios = require('/opt/node_modules/axios');
パスは下記参照
レイヤーを作成するときは、そのすべてのコンテンツを .zip ファイルアーカイブにバンドルする必要があります。.zip ファイルアーカイブは、Amazon Simple Storage Service(Amazon S3)またはローカルマシンからレイヤーにアップロードします。Lambdaは、関数の実行環境を設定するときに、レイヤーの内容を /opt ディレクトリに抽出します。
参考