📈

Lambdaコンテナ関数ではAWS提供ベースイメージを使う

2023/07/20に公開

コールドスタートに4~5秒かかるPythonのLambdaコンテナ関数があり、改善策を調べていたら、AWS公式ブログに下記の記述を見つけました。

AWS が提供するベースイメージは、Lambda サービスによってプロアクティブにキャッシュされます。つまり、ベースイメージは近くの別のアップストリームキャッシュにあるか、ワーカーインスタンスキャッシュにすでに存在しています。はるかに大きいにもかかわらず、キャッシュされないかもしれないサードパーティのベースイメージと比較するとデプロイ時間が短くなる可能性があります。
コンテナイメージとしてパッケージ化された Lambda 関数の最適化 | Amazon Web Services ブログ

悩んでいた関数ではDebianベースイメージ (python:3.11-slim-bookworm) を使っていたため、ためしにAWS提供のイメージ (public.ecr.aws/lambda/python:3.11) に変えたところ、コールドスタートが3秒に改善しました。

イメージサイズは292MBから508MBに増えましたが、今回は時間のほうが重要なので、このままAWS提供ベースイメージを使い続けることにしました。

というわけで、ブログ記事のとおり、できるだけAWS提供ベースイメージを使うのがよさそうです。

ENECHANGE

Discussion