Serverless Prune Pluginを使ったアプリケーションのデプロイサイズの削減方法

Serverless Prune Pluginを使ったアプリケーションのデプロイサイズの削減方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

サーバーレスアーキテクチャを活用することで、開発・運用のコストを削減しながら、高品質な機能開発を行うことができます。

本記事では、Serverless Prune Pluginを使用したAWS上に保持するLambda関数のバージョン数自動最適化の方法を紹介します。

Serverless Prune Pluginとは

Serverless Frameworkはデフォルトでは、Lambda関数の過去のバージョンをすべて保持してしまうため、AWSにデプロイされたバージョンの数が膨大となり、リミット制限に引っかかることがあります。

このプラグインは、AWS上に保持するLambda関数のバージョン数をデプロイ後に指定数まで自動削除します。これにより、AWS上に保持可能なLambda関数の合計サイズのリミット制限の回避が可能となります。

Serverless Prune Pluginの使い方

Serverless Prune Pluginを使用するには、まず、Serverless Frameworkをインストールします。

次に、Serverless Prune Pluginをインストールします。

npm install serverless-prune-plugin --save-dev
# or
yarn add serverless-prune-plugin -D
# or
sls plugin install -n serverless-prune-plugin

次に、プロジェクトのserverless.ymlファイルにプラグインを追加します。

plugins:
  - serverless-prune-plugin最後に、デプロイ時にプラグインを実行するように、deployコマンドを実行します。

過去のバージョンの一括削除

以下のコマンドにより、デプロイされた各関数の最新バージョン(n 個)を除くすべてのバージョンが削除されます。エイリアスで参照されるバージョンは自動的に保存されます。

sls prune -n <number of version to keep>

Region/Stageの絞り込み

–stageと–regionを使用した絞込も可能です。

sls prune -n <number of version to keep> --stage production --region eu-central-1

自動最適化

デプロイ後に自動的に実行されるように設定することもできます。自動最適化の設定は、serverless.ymlのカスタムプロパティ内で行います。

custom:
  prune:
    automatic: true
    number: 3

レイヤーも対象にできる

Lambda関数と同じようにLambda Layersを対象にすることもできます。includeLayersというプロパティで設定が可能です。

custom:
  prune:
    automatic: true
    includeLayers: true
    number: 3

削除候補のプレビュー

sls prune -n <number of version to keep> --dryRun

まとめ

本記事では、Serverless Prune Pluginを使用しデプロイ時に不要な過去のバージョンを削除し、AWS上のパッケージサイズを削減する方法を解説しました。

サーバーレス開発低コストなAWS開発内製化はお気軽にお問い合わせください。