4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambdaをコンテナイメージで動かす際、SnapStartが利用可能になったよ

4
Last updated at Posted at 2026-09-02

AWS LambdaとSnapStart

AWS Community Builders Serverlessカテゴリの端くれの@Kanahiroです。2024年にこんな記事を寄稿させていただいたくらいにはAWS Lambdaのことをコンテナを動かす何かだと思っています

2026-09-02、ついにコンテナイメージのLambdaでもSnapStartが利用可能となりました

SnapStartのうれしみ

AWS Lambdaのコールドスタートは有名な話ですが、コンテナイメージを動かす際、体感ですがだいたい2秒くらいのコールドスタートが発生します。我慢出来なくはないですが、リクエストスパイク時にはもう少し速く動いて欲しい感じです。

SnapStartはいわゆる「INITフェーズ」完了時の状態をキャッシュするので、以後の実行時にはINITフェーズをスキップすることが出来ます(厳密にはそこまでの代物ではないことが後でわかる)。なのでコールドスタートの短縮が見込まれます。

image.pnghttps://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtime-environment.html

料金

SnapStartは追加課金が発生する機能です。計算式の説明などはややこしいので以下のクラメソさんのすばらしい記事を参照してください。

やってみる

コンソールでSnapStartを選択可能になっているので、PublishedVersionsを選択すればよさそうです。

Screenshot 2026-09-03 at 0.46.30.png

設定前

Screenshot 2026-09-03 at 1.00.19.png

X-Rayでフェーズごとの所要時間を見てみると、INITフェーズで~1000ms程度を要していました(複数の結果を観測した値)。コールドスタートの体感2秒ともそこそこ整合しています。

設定後

コンテナイメージでSnapStartを活用するために、以下の手順が必要でした

  1. SnapStartを有効化する
  2. バージョンを発行する
  3. AWS管理のコンテナイメージではなかったので、DockerfileにLABEL com.amazonaws.lambda.feature.snapstart="Allow"を追記

以上により、INITフェーズがRESTOREフェーズに置き換わるようになりました。

Screenshot 2026-09-03 at 2.26.08.png

所要時間は200ms~700msの範囲で、400msくらいが平均になりそうでした。つまりすごくざっくり500msくらい短縮されるかもしれない感じです。INITフェーズの時間をまるまるスキップできるということではなく、キャッシュを読み出すRESTOREフェーズに置き換わる、ということのようです。ほぼ体感値みたいな数値ですし、環境によって結果は異なるでしょうが、SnapStartがどれくらいのものなのかは参考になりそうです。SnapStartは追加料金の発生する機能ですから、費用対効果がどれくらいかは考えて有効化すべきです。

終わりに

ついに来た、という感じです。というのは、Lambdaのインスタンスの起動時に一度だけ実行したい準備のような処理というはよくあるためです。コンテナイメージでも、SnapStartをうまく使って独自の初期化処理をINITフェーズ内で終わらせるようなテクニックを利用してパフォーマンス向上を狙っていきましょう。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?