AWS lambdaでnmp関連のライブラリやモジュールを使用するときのやり方
前提条件
node.jsのバージョンでlambda関数が作成されていること。
ローカルの環境にnpmがインストールされていること。
手順概要
- 使用する予定のnpmライブラリをローカルPCにインストール
- フォルダ名などが結構重要で、適当につけると後で使うのが大変になります!
- インストールしたnpmライブラリをフォルダ全体でzip化
- zimp化したフォルダを、lambdaにアップロードして、lambda layerを追加する
- lambda layerというと、難しそうに聞こえますが、簡単です!
- 事前に使いたいライブラリなどを、登録してあげて、lambdaで使えるようにしてあげるということです。
- lambda関数から、npmライブラリを呼び出す
使用する予定のnpmライブラリをローカルPCにインストール
まずは使用予定のnpmライブラリをローカルPCにインストールします。
最初にnodejs
というフォルダをどこでも良いので作成してください。
MEMO
この名前が結構重要で、lambdaを使用するときに、デフォルトでAWS lambdaがライブラリを探しに行く場所というのが決まってまして、その名前になります。
続いて、nodejs
の中に入って、以下のコマンドを実行します。
ターミナル #nodejsのフォルダの中で実行
$ npm install pg
すると、node_modulesなどが作られます。
これで必要なライブラリをインストールできました。
インストールしたnpmライブラリをフォルダ全体でzip化
今度はインストールしたらライブラリをzip化します。
以下のようなコマンドでnodejs
のフォルダごとzip化してください。
ターミナル #nodejsがあるフォルダ
$ zip -r nodejs.zip .
zimp化したフォルダを、lambdaにアップロードして、lambda layerを追加する
以下のサイトがすごくわかりやすいです。
先程のzipファイルをlambda layerに追加する部分を行います。
lambda関数から、npmライブラリを呼び出す
あとは、lambda関数から、npmライブラリが呼び出せるかどうか確認します。
例えば以下のような感じです。
コード
const { Client } = require('pg');
const client = new Client();
console.log(client);
ちゃんとrequireが使えているかどうかを確認していきます。
以上です!