LoginSignup
9
5

More than 1 year has passed since last update.

lambdaでnpm moduleを使う方法

Last updated at Posted at 2021-08-17

前提

Lambda Functionが作成されていること。
ローカル環境にnpmがインストールされていること。

手順

必要な作業は下記
1. 使いたいnpmライブラリをローカルにインストールしてzip化する
1. Lambda Layerを1.のzipをもとに作成し、Lambda Functionと紐づける
1. 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 の左ペイン上の「レイヤー」>「レイヤーの作成」を押下
スクリーンショット 2021-08-17 182721.png

  適当なレイヤー名を付けて、zip化した「node_modules」をアップロードする。
  ランタイムはzip化したパッケージに合わせる。今回で言うと「Node.js」を選択する。

・「Lambda」から関数を選択し、「関数の概要」ページに移動
 image.png

  画面下の「レイヤー」>「レイヤーの追加」 > 「カスタムレイヤー」でさっき作ったレイヤを選択し「追加」を押下

Lambda Functionのコード上からnpmライブラリを呼び出す

↓こんな感じでライブラリを利用できる。

const axios = require('/opt/node_modules/axios');

パスは下記参照

レイヤーを作成するときは、そのすべてのコンテンツを .zip ファイルアーカイブにバンドルする必要があります。.zip ファイルアーカイブは、Amazon Simple Storage Service(Amazon S3)またはローカルマシンからレイヤーにアップロードします。Lambdaは、関数の実行環境を設定するときに、レイヤーの内容を /opt ディレクトリに抽出します。

参考

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5