[新機能]AWS LambdaがNode.js v8.10をサポートしました
こんにちは。サービスグループの武田です。
東京は暖かい日が続き、葉桜もちらほら見られるようになってきました。今日はAWS Lambdaが、待望のNode.js v8.10
をサポートしたので紹介します。
AWS Lambda Supports Node.js v8.10
なお公式ドキュメントでは、4月3日時点で日本語ドキュメントは対応していませんでした。英語ドキュメントは更新されているため次のリンクから確認できます。
Programming Model(Node.js) - AWS Lambda
Node.js v8.10のプログラミングモデル
バージョン6系から8系での変更点はリリースノートなどを見ていただくとして、一番の変更点はasync/awaitパターン
が使えるようになったことでしょう。
というわけで、マネジメントコンソールからv8.10
を確認しつつ、Lambdaでasync/awaitパターン
のコードも試してみます。ちなみに確認は東京リージョンです。
マネジメントコンソールでやってみた
まずはマネジメントコンソールを開き、AWS Lambdaを開きます。開けたら、[関数の作成]ボタン
をクリックします。
ランタイムのプルダウンを開くと、デフォルトはNode.js 6.10
ですが、Node.js 8.10
が選択できるようになっています!
名前やロールの欄も適宜入力し、[関数の作成]ボタン
をクリックします。
無事に作成できました。
関数の作成
Lambda関数の作成ができたので、続いてasyncとawaitを使ったコードを試していきます。今回は次のようなコードを保存して動作確認をしました。
function delay(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } exports.handler = async function(event, context) { console.log('before wait'); const s = await delay('Hello from Lambda'); console.log(s); context.done(null, s); };
delay関数
は、引数を2秒後にresolveするプロミスを返します。従来のプログラミングモデルでは、返ってきたプロミスのthenメソッド
を呼び出して、resolve/reject
の処理をそれぞれ定義していました。v8.10
では、代わりにasync/await
を使って同様のことが実現できます。
エディタに入力できたら[保存]ボタン
をクリックして保存します。
テストしてみる
保存ボタンの横にある[テスト]ボタン
をクリックします。
特に引数を指定する必要はありませんが、とりあえずテンプレートのまま、適当な名前をつけて保存します。
作成できたら、もう一度[テスト]ボタン
をクリックしましょう。
実行結果のログを見ると、出力されたメッセージに2秒の遅延が確認できました!
2018-04-03T01:49:54.563Z 4df6a04f-36e1-11e8-b0dd-d710d63aaa10 before wait 2018-04-03T01:49:56.579Z 4df6a04f-36e1-11e8-b0dd-d710d63aaa10 Hello from Lambda
まとめ
新しくサポートされたNode.js v8.10を試してみました。イマドキのJSプログラミングがLambdaでも可能になる素敵すぎるアップデートですね!
すでに利用している方は、これを機会に、以前作成したLambda関数のアップデートなどもぜひ検討してみてください!