LoginSignup
2
2

Lambda@EdgeをNode.js 14から18に上げるのに苦労したメモ

Last updated at Posted at 2024-01-11

概要

サポート終了の関係で既存のNode.js 14のLambda@Edge関数をNode.js 18にあげるにあたってランタイムを変えるだけでは上手くいかない場合があったので備忘します。

AWS SDKが読み込めない

const aws = require("aws-sdk");としていた部分がCannot find module 'aws-sdk'というエラーになってしまう。

原因はAWS SDK v2がNode.js 18のランタイムには同梱されなくなり、v3をインポートする記述への変更が必要になったため。
この関数ではSSMを使っていたので、
import { SSMClient, GetParameterCommand } from "@aws-sdk/client-ssm";
のように変更

ES modules構文に変更

上記のためES modules構文を有効にするため、拡張子もindex.jsからindex.mjsに変更。

ハンドラーの書き方も変更する

SDKの使い方を変更

SDKのバージョンが変わったので使い方を変える必要があった。

こちらの記事を参考にさせていただきました。

ES modulesでrequire構文を使う

AWS SDK以外のライブラリをrequire構文で読み込んでいたためそのままではエラーになってしまう。

このライブラリでのimport構文の書き方が見つからなかったためこちらを参考にrequireで読み込むよう回避。

余談

後から気づいたがこちらの記事のようにCommonJSの構文を維持すればよかっただけかも…。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2