AWS Lambdaにおけるストレージのクォータ
AWS Lambdaにはバージョンという概念が存在しており、Lambda上で過去のバージョンを管理できます。 また、管理されるバージョンに対して、エイリアスも定義できます。
便利な機能であるため、Serverless FrameworkでデプロイされるLambda関数ではこのバージョンを常に保存し続けます。結果、大量のバージョンが残りつづけ、Lambdaのストレージを圧迫してしまいます。
AWS Lambdaにおけるクォータでは、ストレージ容量のデフォルトは75GBであり、これを超過するとエラーになってしまいます。
Serverless Frameworkにおける解決策
Serverless FrameworkにはServerless Prune Pluginが存在し、これを利用することでバージョン数を制限できます。 具体的には、過去n世代のバージョンを残し、それ以前のバージョンを自動的に削除可能です。
導入方法
まずは当該プラグインをインストールします。
$ npm install --save-dev serverless-prune-plugin
その上でserverless.yml
に対し、当該プラグインの利用を制限し、何世代までのバージョンを残すべきかを設定します。
diff --git a/serverless/serverless.yml b/serverless/serverless.yml index 9d765ff..b9f43b0 100644 --- a/serverless/serverless.yml +++ b/serverless/serverless.yml @@ -84,3 +84,10 @@ functions: plugins: - serverless-esbuild + - serverless-prune-plugin + +custom: + # Lambda のバージョンは 5 世代まで保存 + prune: + automatic: true + number: 5
こうしておけば、あとはsls deploy
を行う際に、自動的に不要となった関数バージョンを"prune"してくれます。管理が楽なので、重宝しています。