こんばんは、SWX3人目の熊谷(悠)です。
Node.js Lambdaで開発時、掲題のエラーに遭遇したので解決策を備忘録として残します
結論
Lambda 作成時に自動作成されていたindex.mjsファイルの拡張子を「index.js」へ変更する
原因
CommonJS モジュールでのみ動作するコードだったため、実行時エラーが発生していた
参考:ES モジュールとしての関数ハンドラーの指定:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-nodejs.html#designate-es-module
デフォルトで、Lambda は .js サフィックスが付いたファイルを CommonJS モジュールとして扱います。
オプションで、コードを ES モジュールとして指定できます。.mjs のファイル名拡張子を使用する方法で実行できます。
参考:Node.js ハンドラーの基本:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html#nodejs-handler-basics
それぞれ、ハンドラー関数の定義の仕方が異なる
ES module handler の場合
export const handler = async (event, context) => { console.log("EVENT: \n" + JSON.stringify(event, null, 2)); return context.logStreamName; };
CommonJS module handler の場合
exports.handler = async function (event, context) { console.log("EVENT: \n" + JSON.stringify(event, null, 2)); return context.logStreamName; };