AWSから公開されたJavaScriptランタイム「LLRT」を使ったLambdaをAWS CDKで構築する方法

今回はAWSから先日公開されたばかりのAWS Lambdaでの利用にフォーカスしたJavaScriptランタイム「LLRT」をAWS CDKを用いて構築する方法を解説していきたいと思います。

本記事のコードの完成形はこちらのGithubリポジトリから確認できます。

LLRTとは

はじめにLLRTの概要を解説します。

LLRTとはLow Latency Runtimeの略で、AWS Lambdaでの利用にフォーカスしたAWSから公開されたJavaScriptランタイムです。

Rustで開発され、JavaScriptエンジンにはQuickJSを採用しているのが特徴です。

Node.jsのAPI仕様に基づいているため、Node.jsで動作するコードからの移行は容易ですが、完全互換ではなく一部実装されていないAPIがございますので使用に関しては注意が必要です。

詳しい互換性はこちらのページからご確認ください。

なぜ、AWS Lambdaでの利用にフォーカスしているか説明しますと、

AWS Lambdaはその料金体系からランタイムの起動にかかる時間もコストがかかるためランタイムの性能によって料金が左右されます。

LLRTはNode.jsやDeno、Bunなどの既存のJavaScriptランタイムと比較して起動速度が10倍高速なのでAWS Lambdaでのコスト低減効果が最大で2倍になるとのことです。

llrtは実験的実装としてベータ版の状態ですが、既に利用が可能となっていますので実際に試してみましょう。

環境情報

OS:MacOS

シェル:Bash

AWS CDK初期セットアップ

本ブログではAWS CDKを用いたIaC対応の構築方法を採用するためAWS CDKのセットアップが必要です。

公式資料はこちら

まずはaws-cdk@2をインストールします。

cdk –versionコマンドでバージョン情報が取得できたらOKです。

続いてAWS CDKでTypeScriptを使用するためtypescriptもインストールします。

そうしましたらcdk initコマンドを実行しプロジェクトを生成します。

するとテンプレートが自動生成されるのでLLRTをランタイムにしたAWS Lambdaをデプロイするコーディングに入ります。

 Lambdaコード

ディレクトリ構成は上の画像のような感じです。

まずは「lib/lambda/index.ts」でLambdaで動かすコードを書きます

Hello Worldを返す簡単なコードですがみなさんは好きなようにコーディングしてください。

package.jsonは以下です。

では、Lambdaのコードが完成しましたのでCDKの方をコーディングしたいと思います。

AWS CDKコード

こちらのAWS CDK LLRT Function constructを使用するため、

コマンドで事前にライブラリをインストールします。

「lib/llrt_practice-stack.ts」ファイルのコードは以下です。

Lambdaの場合CloudWatchアクセスが付与できる「AWSLambdaBasicExecutionRole」はデフォルトで作成されますが、lambdaのコードによってS3アクセス権限等他のリソースへのアクセスが必要な場合はIAMポリシーとIAMロールを明示的に作成する必要がございますのでご注意ください。

「bin/llrt_practice.ts」では以下のようにコーディングします。

こちらのコードをそのまま使う場合、環境変数でリージョンを指定してあげてください。

ではデプロイします。

AWS CDKでLLRTランタイムのLambdaをデプロイ

AWS CDKのデプロイなのでいつものようにDockerを立ち上げて以下のようにコマンドを実行してください。

プロファイルはAWS CLI用のプロファイルを自由に設定してください。

実行が成功しましたらAWS管理画面からLambdaを見ていきます。

このようにラインタイムがAmazon Linux 2023になっているはずです。

公式ページでもAmazon Linux 2023を選択してくださいと書かれてあるので問題なさそうです。

実行してみます。

このようにテスト実行が成功したらOKです。

終わりに

これで「LLRT」を使ったLambdaをAWS CDKで構築する方法を終わります。

 

他にも技術ブログをあげているのでそちらもよろしければ見ていってださい。

私のブログ記事一覧

 

株式会社ギークフィードでは開発エンジニアなどの職種で一緒に働く仲間を募集しています。

弊社に興味を持っていただいたり、会社のことをカジュアルに聞いてみたいという場合でも、ご気軽にフォームからお問い合わせください。その場合はコメント欄に、カジュアルにお話したいです、と記載ください!

採用情報はコチラ

参考資料

AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambdaでの利用にフォーカス

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ