chrome-aws-lambdaをNode.js16に対応させる
- 2022.08.17
- AWS
- AWS, chrome-aws-lambda, Lambda, node.js
はじめに
AWSからNode.js 12のランタイムサポート終了予定のメールが届いた。
Node.js 12自体のサポート終了を受けてのことらしい。「Node.js 16 にアップグレードすることをお勧めします。」との事なので、ランタイムをNode.js 16にしたところ、Lambda実行時に以下のエラーが出た。
Error: Failed to launch the browser process!
/tmp/chromium: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
原因
原因はレイヤーとして使っていた「chrome-aws-lambda」がNode.js16に対応していないためだった。
対応
「chrome-aws-lambda」のGithubを確認してみると、Node.js16対応バッチがプルリクされていたので、それを元に修正するとエラーは出なくなった。
chrome-aws-lambda – Add support for nodejs16.x #274
https://github.com/alixaxel/chrome-aws-lambda/pull/274
修正箇所
修正は、10行目と168行目の2箇所。どちらも以下のように「16」を追加する。
index.ts
- if (/^AWS_Lambda_nodejs(?:10|12|14)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { + if (/^AWS_Lambda_nodejs(?:10|12|14|16)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) {
修正済みのリポジトリ
styfle/chrome-aws-lambda
https://github.com/styfle/chrome-aws-lambda/tree/patch-1
まとめ
今回は、Node.js16にアップグレードしましたが、「chrome-aws-lambda」は、Node.js14には対応しているらしいので、しばらくはランタイムをNode.js14にしておくのもいいかもしれませんね。
-
前の記事
AWS EC2にLaravelをデプロイする手順(入門者向け)2022修正版 2022.07.18
-
次の記事
【AWS】EC2にswap領域を用意する(スワップ メモリ) 2022.08.22
コメントを書く