📝

Lambdaレイヤーにnode_modulesを登録してみた

2021/11/25に公開

Node.jsのプログラムをLambdaにアップロードするときに、node_modulesの容量が大きすぎてエラーになることがあります。
それを回避するために、公式側でLambdaレイヤーにnode_modulesを登録することができるようになっているので、今回はその方法を紹介します。

前提

  • Node.jsをインストール済み
  • npm installの実行など、Node.jsに関する基礎知識がある
  • Lambdaに関する基礎知識がある

手順

公式ドキュメントの
Lambda レイヤーの作成と共有
を参考に進めていきます。

1. nodejsフォルダを作成する

「ただフォルダを作成するだけ」
ではありますが、1点注意点があります。
フォルダ名は必ず「nodejs」で作成します。
image.png

image.png

2. nodejsフォルダでモジュールをインストールする

nodejsフォルダ内で、必要なモジュールをインストールします。
npm initは不要で、インストールのみでOKです。
今回はrequestモジュールだけインストールしておきます。

image.png

3. nodejsフォルダをzip化する

zip化しましょう。
image.png

4. Lambdaレイヤーの作成

Lambdaコンソールからレイヤーを作成します。
僕のアカウントではnode_modulesという名前で作成済みです。
image.png

zipファイルをアップロードしますが、10MB以上の場合はS3を使用することが推奨されています。
ランタイムは必要なNodeのバージョンを選択してください。
image.png

5. 関数にレイヤーを追加

対象の関数コンソールからレイヤーを追加します。
image.png

image.png

これで登録と追加ができたので作業完了です。
モジュールを追加したい場合は、ローカルでnpm installしてからバージョンを作成することでバージョンアップできます。
image.png

まとめ

今回はLambdaレイヤーにnode_modulesを登録する方法を紹介しました。
基本的な内容でしたが、参考になれば幸いです。

参考資料

Lambda レイヤーの作成と共有

Discussion