この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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です。
ここでも言っているように、
パフォーマンス的にも優れているのでよさそうです。