【Alexaスキル開発者向け】AWS Lambda Node.js 18から22への環境アップグレード手順

みなさん、こんにちは。

早速ですが、AWSからのNode.js 18サポート終了に関するメールはご覧になりましたか?

 

[Action Required] AWS Lambda end of support for [Node.js 18]」というタイトルのメールです。

 

今回のサポート終了は、放置しておくと2025年11月1日以降、Lambda関数の編集ができなくなるという大きな影響があります。

まだ大丈夫と思って後回しにしていると、いざという時に困ってしまうかもしれません。

今回は、AlexaスマートホームスキルのLambda関数をNode.js 18から22へアップグレードした際の手順とポイントをまとめました。

 


 

1. なぜアップグレードが必要なのか?

 

AWS Lambdaでは、各ランタイム(Node.jsやPythonなど)にサポート期間が設けられています。期限を過ぎると、セキュリティアップデートやパッチが提供されなくなり、最終的には関数の編集すらできなくなります。

既存の関数はサポート終了後も当面は動作しますが、新しい機能を追加したり、バグを修正したりといった編集作業ができなくなるのは大きなリスクです。この機会に、新しい環境への移行を進めておきましょう。

 


 

2. Node.js 22への移行作業:CommonJSからES Modulesへ

 

通常、アップグレードで一番やっかいなのは、新環境で問題なく動作するようにコードを修正することです。

御多分にもれず、今回のアップグレードでも、Node.js 18以前のランタイムとNode.js 22以降のランタイムでは、モジュールの扱いが異なりコード修正が必要となりました。

AWS Lambdaの古いバージョンのNode.js関数は CommonJS という形式で書かれていることが多いです。具体的にはrequire()exports.handlerといった書き方です。しかし、Node.js 22では ES Modules 形式が推奨されています。そのため、コードを書き換える必要がありました。

私の場合は、既存のコードがNode.js 12時代の古いものだったので、この機会に以下のように修正しました。

  • require()からimportへ
    • 他のモジュールを読み込む際にrequire()ではなくimportを使うように変更
  • exports.handlerからexport const handlerへ
    • ハンドラー関数のエクスポート方法を変更
  • async/awaitの使用
    • .then()でチェインしていた非同期処理をasync/awaitに書き換え
  • varからconst/letへ
    • 古い変数宣言をモダンなconstletに変更

手作業で修正するのは大変ですが、Claude4のようなAIモデルを使うと、あっという間に変換してくれます。自分で調査する手間が省けるので、環境移行にはこういったツールを積極的に活用するのがおすすめです。

 


 

3. 新しいLambda関数の作成と設定

 

コードの修正が完了したら、いよいよAWS Lambdaで新しい関数を作成します。本来ならNode.js18ランタイムの環境をそのまま22へ移行できるとよいのですが、Lambdaの場合は新規で作成する必要があります。

Lambda関数の作成

AWSコンソールで新しいLambda関数を作成します。ランタイムは必ずNode.js 22.xを選択しましょう。Alexaスマートホームスキルの場合、リージョンは既存の関数に合わせてオレゴンにしました。

新規の関数
新規の関数を作成

コードの貼り付けとデプロイ

関数にはindex.mjsが既に作成されているはずですので、先ほど修正したES Modules形式のコードを上書きで貼り付けてデプロイします。

Alexaトリガーの設定

開発者コンソールからAlexa Skills kitを開き、環境移行したいAlexaスマートホームスキルのスキルIDをコピーします。

スキルIDをコピー
スキルIDをコピー

次に、Lambda関数の関数概要画面からトリガーを追加で「Alexa Smart Home」を選択し、コピーしたスキルIDを貼り付けてトリガーを追加します。

スキルIDを貼り付け
スキルIDを貼り付け
トリガーが追加された
トリガーが追加された

 


 

4. Alexaスキル側のエンドポイントを更新

 

最後に、Alexaスキル側の設定を変更します。

  1. Lambda関数のARNをコピー
    • トリガーを追加したAWS Lambdaの関数の画面右にある関数のARNをコピーします。
  2. エンドポイントの貼り付け
    • 開発者コンソールでAlexaスマートホームスキルを開き、エンドポイント設定画面で、コピーした新しいLambda関数のARNを貼り付けます。
エンドポイントにARNを貼り付け
エンドポイントにARNを貼り付け

 

これで設定は完了です!

新規でスキルを作成した場合はデバイスの再発見が必要ですが、今回はLambda関数を置き換えただけなので、その必要はありません。

 


 

5. 動作テスト

 

設定が終わったら、Alexaデバイスや開発者コンソールのテスト画面で動作確認をしましょう。「アレクサ、〇〇をつけて」といった発話で、意図した通りに動くかチェックします。

今回は無事一発で動作しました!

 


 

まとめ

 

Lambda関数の環境バージョンアップは、定期的にやってくる避けられない作業です。今回はCommonJSからES Modulesへの変換が必要だったため少し手間がかかりましたが、通常は新しいバージョンのランタイムで関数を作成し、コードを貼り付けるだけで完了する場合がほとんどです。

ついつい後回しにしてしまいがちな作業ですが、Lambda関数が編集できなくなる前に、早めにアップグレードを済ませておきましょう!

 

本日も最後までお読みいただきありがとうございました。

それでは、よいAlexaライフを!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール