はじめに
こん〇〇は!
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」になっていれば設定終了です。
参考文献