chrome-aws-lambdaをNode.js18に対応させる

はじめに

AWSからLambdaで使っているランタイム(Node.js16)がサポート終了になるというメールが届いたので、Node.js18に切り替えることに。

対応方法

ランタイムの切り替えは簡単なのですぐにできたが、レイヤーとして使っていたchrome-aws-lambdaNode.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に対応させる」と同様なのでそちらをご覧ください。

chrome-aws-lambdaを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 LambdaのNode.jsランタイムを16から18にしたらaws-sdkがインポートできなくなった