chrome-aws-lambdaをNode.js18に対応させる
- 2023.12.23
- AWS
- chrome-aws-lambda, Lambda, node.js
はじめに
AWSからLambdaで使っているランタイム(Node.js16)がサポート終了になるというメールが届いたので、Node.js18に切り替えることに。
対応方法
ランタイムの切り替えは簡単なのですぐにできたが、レイヤーとして使っていたchrome-aws-lambda
がNode.js18に対応しておらず、エラーを吐いたので以下の方法で対応させた。
修正箇所
index.tsの、10行目と168行目の2箇所。どちらも以下のように「18」を追加する。
- if (/^AWS_Lambda_nodejs(?:10|12|14)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) { + if (/^AWS_Lambda_nodejs(?:10|12|14|16|18)[.]x$/.test(process.env.AWS_EXECUTION_ENV) === true) {
詳細については、以前書いた記事「Node.js16に対応させる」と同様なのでそちらをご覧ください。
まとめ
Node.js20にも対応させたいところでしたがうまく動かなかったので、とりあえず今回はNode.js18にしておきました。そのうちまたNode.js18もサポート終了になるでしょうから、使っているライブラリなどは常にアップデートなどしないとダメですね。
chrome-aws-lambdaは更新が止まっているっぽいので、別のものに切り替えた方が良いのかな。。。
追記
その後、chrome-aws-lambdaからランタイムNode.js20対応のsparticuz/chromiumに乗り換えました^^
Sparticuz/chromium: Chromium (x86-64) for Serverless Platforms
https://github.com/Sparticuz/chromium
注意
Node.js18以上にすると、コード内でaws-sdk(v2)を使っている場合は動かなくなるので、aws-sdk(v3)への切り替えが必要です。切り替えについては以下の記事。
-
前の記事
AWS EC2に無料SSL(let’s encrypt)を設定する 2023.07.02
-
次の記事
AWS LambdaのNode.jsランタイムを16から18にしたらaws-sdkがインポートできなくなった 2023.12.23
コメントを書く