2023年1月18日 更新

【re:Invent2022】Lambda SnapStartの有効化方法(コンソール)

はじめに

re:Invent2022で発表された「Lambda Snap Start」ですが、さっそくどのように有効化したらよいか確認してみたので、記事にしました!
もうすでに、AWSのサイトに今回の記事の内容は書いてありますので、それを試してみた。といったような内容です。

Lambda SnapStartとは

簡単に言うと、通常のcold startに比べ高速に起動できるサービスです。Lambdaのライフサイクルは、init/Invoke/Shutdownの3ステップあります。このうちinit部分を高速化するサービスです。
過去にLTをした時の資料があるので、こちらで説明します。


通常init部分は数ミリ秒しかかからないものの、ランタイムやフレームワークの組み合わせによって10秒程度かかってしまう場合があります。このinit部分で行われる実行環境の作成などを事前にして、SnapShotを取得/キャッシュしておきます。Lambda関数が呼び出された場合に、実行環境などをイチから作るのではなく、SnapShotを呼び出してリストアすることで、init部分を高速化します。

前提条件

使用できるランタイムは「Java 11」のみ(2022/11/29現在)

できないこと、できない環境/サービス

・プロビジョニングされた同時実行
・arm64 アーキテクチャ
・Lambda 拡張機能 API
・Amazon Elastic File System (Amazon EFS)
・512MBを超えるエフェメラル(一時)ストレージ

注意点

スナップショットは以下の場合削除されます。

・関数または関数バージョンを削除したとき。
・14日間の関数バージョンの呼び出しがないとき。(14日後に呼び出された場合再作成される。)

有効化方法

まず、Lambdaを作りましょう。
使用できるランタイムは「Java 11」のみなので、コンソール上からは「Java 11(Corretto)」を選択します。また、アーキテクチャは「arm64」に対応していないため、「x86_64」を選択します。あとはデフォルトでOKです。


作成出来たら、「設定」タブへ移動し、「一般設定」を見てみましょう。
画像の青線部分、現在はSnapStartが設定されていない状態(None)となっています。有効化するために「編集」を押下します。


青線部分の「エフェメラルストレージ」の容量は「512MB」を超えるものは対応していないため、「512MB」以下で設定してください。赤線部分「SnapStart」がページ移動時は「None」となっていますので「PublishedVersions」に変更して、保存してください。


一般設定画面に戻り、「SnapStart」の項目が「PublishedVersions」になっていれば設定終了です。

参考文献

Improving startup performance with Lambda SnapStart - AWS Lambda
Activating and managing Lambda SnapStart - AWS Lambda

※掲載内容は個人の見解です。
※会社名、製品名、サービス名等は、各社の登録商標または商標です。

関連記事