AWS Lambda(Node)でES modulesとtop-level awaitが使えるようになってた
Introduction
タイトル通り、先日よりLambdaでES modulesとtop level awaitが使えるようになってました。 なので、Node14.xランタイムを指定して、↓のようにかけます。
import foo from 'bar'; const data = await foo.hoge(); export async function handler() { ・・・・・・・・・・ };
Environment
以下の環境で試しました。
- OS : MacOS 11.3.1
Try
AWSコンソールでLambda関数を作成します。
ランタイムはNode.js 14.xです。
次にローカルでLambdaを記述していきます。
% mkdir es_module_lambda && cd es_module_lambda % npm init
package.jsonのtypeをmodules変更。
{ "name": "es_module", "type": "module", ・・・・・・・・・・ }
動作確認用にaxiosをインストール。
% npm install --save axios
lib.mjsファイルを作成。
//lib.mjs export function get_message() { return "es module!"; }
↑のlib.mjsとaxisを使うハンドラ用index.mjsを作成。
//index.mjs import axios from 'axios'; import { get_message } from './lib.mjs'; const res = await axios.get(`https://api.zipaddress.net/?zipcode=1010025`); export async function handler() { const response = { statusCode: 200, "message":get_message(), "body": res.data }; return response; };
コードが記述できたらzip圧縮。
% zip -r /path/your/es_module_lambda.zip .
Lambdaのコンソールへいき、
コード > アップロード元 > zipファイル
でさきほどのzipファイルを指定してアップロードします。
テストタブで実行して↓のように結果がかえってくればOKです。
ここでも言っているように、
パフォーマンス的にも優れているのでよさそうです。