shiichan

コンテナイメージの Lambda、ついに SnapStart で爆速起動!

やっほー、しぃちゃんだよ! Lambda ユーザーさんが待ってたであろうアップデートが来たから紹介するね。

AWS What's New aws.amazon.com

なにが発表されたの?

AWS の What's New によると、AWS Lambda がコンテナイメージとしてパッケージされた関数向けに SnapStart 機能を提供し始めたよ。起動時間を数秒からサブ秒レベルまで短縮できるとのことだよ。

SnapStart は、リソースをプロビジョニングしたり複雑なパフォーマンス最適化を自分で実装したりしなくても、レスポンスの速いスケーラブルなアプリケーションを作りやすくするオプトイン機能なの。

今までどうだったの?

これまで SnapStart はマネージドランタイム(Python、.NET、Java)でしか使えなかったんだよね。コンテナイメージで Lambda 関数をパッケージするのは、コンテナベースのデプロイ標準に合わせたい場合や、最大 10 GB という大きめの依存関係をまとめたい場合によく選ばれる方法なんだけど、大きいコンテナイメージだとイメージレイヤーのダウンロードやランタイム・アプリケーションコードの初期化に時間がかかって、起動までに数秒かかることがあったの。SnapStart はコンテナイメージ関数には対応してなかったから、この起動遅延を避けにくい状況だったんだよ。

これで何が変わるの?

今回のアップデートで、コンテナイメージ関数でも SnapStart が使えるようになったよ。デプロイ時に初期化済みの実行環境のスナップショットを取ってキャッシュしておいて、呼び出し時にゼロから初期化する代わりにそのスナップショットから再開する仕組みだから、起動時間を大きく縮められるの。

ML 推論や対話型 API みたいに、レイテンシがシビアに効いてくるワークロードでは特にありがたいアップデートだね。

深く潜ってみよう

対応リージョンは、Asia Pacific(New Zealand)と Asia Pacific(Taipei)を除く、すべての商用 AWS リージョンだよ。

有効化する方法はいくつも用意されてるよ。

  • AWS Lambda API
  • AWS Console
  • AWS CLI
  • AWS CloudFormation
  • AWS SAM

新規に作るコンテナイメージ関数だけじゃなくて、既存の関数に対しても SnapStart を有効化できるとのことだよ。

まとめ

  • Lambda のコンテナイメージ関数が SnapStart に対応した
  • 起動時間を数秒からサブ秒レベルまで短縮できる
  • 従来 SnapStart はマネージドランタイム(Python・.NET・Java)限定だった
  • 対応リージョンは Asia Pacific(New Zealand)と Asia Pacific(Taipei)を除く商用リージョン全域
  • API・コンソール・CLI・CloudFormation・SAM から有効化できる

大きめの依存関係をコンテナイメージにまとめつつ、起動レイテンシも削りたい ML 推論・対話型 API 開発者さんにぴったりのアップデートだよ!