re:Invent 2022の期間中にLambdaのコールドスタート問題を解消する大きなアップデートが発表されました。
New – Lambda SnapStart で Lambda 関数を高速化
過去に検証した内容のように、特にJavaの場合のコールドスタートに時間がかかる問題があり、この解消に有効とのことです。
追加費用もなく利用できるとのことなので、常に有効化でよいのではないかと考えていたのですが、いくつか制限がありそうです。
対象はJava 11のみ
SnapStartの設定は、基本設定
のセクションにありますが、ここの注意書きに サポートされているランタイムは Java 11 (Corretto) です。 とありますので、他の言語やバージョン11以外のJavaの場合も有効化できません。
2022年12月現在、LambdaではJava 8、Java 8(Amazon Linux 2)、Java 11がサポートされていますが、この内Java 11の場合のみSnapStartを有効化できるようです。
そのため、 Pythonの機械学習ライブラリーと組み合わせたコンテナLambdaなども対象外です。残念。
SnapStartと同時に使えない機能がある
上の画像のSnapStart の互換性に関する考慮事項
のリンク先を確認したところ他にも制約事項がありました。
- プロビジョニング済み同時実行
- arm64アーキテクチャ
- Lambda Extensions API
- Amazon Elastic File System (Amazon EFS)
- AWS X-Ray
- 512MB以上のエフェメラルストレージ
結構いろいろ制限がある印象ですね。
感想
Lambdaを新規作成する際は、コールドスタートの問題があるのでJava以外の言語を採用するケースが多かったので、とても嬉しいアップデートではありますが、実際はあまり出番がないかもしれません。arm64やEFS、X-Rayなど使えるほうが嬉しいことが多い気がします。