ビデオリサーチ公式テックブログ

ビデオリサーチ公式テックブログ

AWS Lambda のパッケージサイズには Lambda layers も含まれます

ビデオリサーチのニシです。

本日は AWS Lambda(以下、Lambda)のデプロイパッケージのクォータ制限についてお話します。

Lambdaのデプロイパッケージのクォータ制限と聞くと、多くの方が「250MB!」と思い浮かべるのではないでしょうか。私もその一人です。

ある日、いつも通りにServerless Frameworkを使ってLambdaをデプロイしようとしたところ、次のエラーメッセージに遭遇しました。

Function code combined with layers exceeds the maximum allowed size of 262144000 bytes. The actual size is 263660487 bytes.

パッと見て、「あー、Lambdaのデプロイパッケージサイズが超えてしまった」と思いました。

そこで、serverless packageコマンドでLambdaのコードをローカルでパッケージングしてみました。(Serverless Frameworkは便利ですね!)

ローカルでライブラリを含めてパッケージングされたファイルのサイズを見ても、数百MBもなく、「あれ?おかしいな?」と思いました。

困りながらもう一度エラーメッセージを見てみると、

Function code combined with layers exceeds the maximum allowed size of 262144000 bytes. The actual size is 263660487 bytes.

文章の頭を見逃していました…

モニタリングのためにDatadogのLambda Layers(以下、Layer)を追加しようとしていたのですが、そのLayerも含めたデプロイパッケージのサイズが250MBを超えてはならない、ということをここで初めて知りました。

AWSLambda quotes ドキュメントにも書かれていました。

https://cdn-ak.f.st-hatena.com/images/fotolife/v/vr_nishi/20231128/20231128140722.png

今回はライブラリを見直し、不要なライブラリを削除することで、何とかLayerを含めた状態でLambdaをデプロイできました。

本日はここまでです。

この記事が誰かの役に立てば嬉しいです。