AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

node.js v14でTop Level awaitがサポートされるようになりました。(EcmaScriptのみ)

現時点でnode.js v16が最新のようです。

npm initでtypeが選べない

defaultでtypeは省略されています。

npm initコマンドでインタラクティブにpackage.jsonを作成するけどtypeに関しての設定がありません。

https://github.com/npm/rfcs/discussions/75

https://github.com/npm/rfcs/issues/347

その為、npm initコマンド実行した後に”type” : “module”を追加する必要があります。

これでLambda(node.js)でTop Level Awaitが使えるようになります。

今後はLambda(node.js)ではEcmaScriptが主流になるかもしれない、そんな気がします。

handler外で初期処理を記述する

プロビジョニングを使用し、Top Level Awaitを使用すれば、handler外で重たい初期処理を記述することができ、これにより処理速度が向上するようです。(試していないです)

lambdaはこんなソースにしました。

AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

バージョン発行し、プロビジョニングされた同時実行を「2」にします。1~2分かかって準備完了になります。

AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

準備完了になった時点で、cloudwatch logsを見ると、handler外が実行されているのがわかります。

AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

これで初期処理が完了しているという感じでしょうか。だからLambda実行自体は早くなる、という事になります。(多分)

では、肝心のlambdaを実行します。「Test」ボタンを押してcloudwatch logsを見てみます。

AWS Lambda(node.js v14)でES ModulesとTop Level awaitがサポート

lambda実行時はhandler外は実行されず、handler内しか実行されていません。予想通りの動きですね。プロビジョニングすると金はかかりますが早くすることができるようです。

参考サイト

https://aws.amazon.com/jp/about-aws/whats-new/2022/01/aws-lambda-es-modules-top-level-await-node-js-14/

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA