NodeJSを動かすのにライブラリが不足する事態発生
- 説明端折りますが、どうやらLayerというものを入れれば良いと検索して分かる。
- 作り方が色々書いてあって、最初間違っているサイト(バージョンが古い?)を閲覧してしまったハマったので自分の方法を記載します。
バージョン
- Node 12.16.03 ※13を使っていたのですが、Lambdaが執筆時は13をサポートしていなかったので、12にダウングレードしました。
- ダウングレード方法は、ここを見て下さい。
https://qiita.com/realtakahashi/items/a398e83a961c8dcfa109
闇雲に作ってはいけない。決まりがあった
- 決まった方法やディレクトリ名で作る
- ディレクトリ名は「nodejs」※それ以外は多分NG
mkdir nodejs
cd nodejs
- ディレクトリ内でnpm initをします。 ※全てデフォルト、エンターでOKです。
- そして、必要なライブラリをインストールします。※例では3つ(require、puppeteer-core、chrome-aws-lambda)をインストールしています。
- インストール後にls -l すると、「node_modules」ディレクトリが作成され、モジュールが入っていればOKです。
npm init
npm i require puppeteer-core chrome-aws-lambda
- インストールしたら、nodejsディレクトリをzipにします。zip名はたぶん何でも良いはずですが、他は試していません。
cd ../
zip -r modules.zip nodejs
あとはZipをLambdaのLayerにアップロードすれば使えます。
- 随分ハマったので、どなたかのお役に立てれば幸いです。