Serverless Framework で古くなったLambdaバージョンを一括で削除&バージョン数を指定個数だけ維持する方法 😎

Serverless Framework で古くなったLambdaバージョンを一括で削除&バージョン数を指定個数だけ維持する方法 😎

Serverless Framework で Lambda をデプロイする際に、デフォルトでは前回のバージョンが永遠に残り続け、そのまま放置すると要領不足でデプロイが出来なく危険性があります。本記事では、Serverless Framework の Lambda のバージョンコントロール用のプラグインを使用した、効率的に Lambda バージョン管理方法を紹介します。

想定する読者

  • Serverless Framework で Lambda をデプロイしているヒト
  • AWS の保守運用担当者
  • AWS を使用した大規模プロジェクトをサーバーレスで開発中のヒト

Lambda のバージョンとは?

AWS Lambda は、デプロイを繰り返すたびに新しいバージョンが発行され、削除しない限りは蓄積され続けます。

バージョンには、以下の情報が含まれています。

  • 関数コードと関連するすべての依存関係
  • 関数が使用する Lambda ランタイム識別子とランタイムバージョン
  • 環境変数を含むすべての関数設定
  • 関数の特定のバージョンを識別する一意の Amazon リソースネーム (ARN)

つまり、古いソースコードをまるごと保持し続けるので、長期的に AWS の容量エラー ( 最大で75GB ) でデプロイができなくなります。

対策方法

serverless-prune-plugin プラグインの導入

serverless-prune-plugin プラグインを導入することで、Lambdaのバージョン管理を容易にしてくれます。

$ yarn add serverless-prune-plugin -D

インストールしたら Serverless Framework へ以下のように設定しましょう。

# serverless.yml

plugins:
  - serverless-prune-plugin

custom:
  prune:
    automatic: true
    number: 3

上記の automatictrue にすることで、自動的に古くなったバージョンを、number に設定した個数まで削除してくれます。上記の設定では、直近の3つのバージョン以外をデプロイ時に自動的に削除してくれます。

既に容量エラーが発生してしまっている場合

面倒ですが、まずは出来る限り手動で削除しましょう。削除しない限り、デプロイが実行できない=プラグインを実行できない、ということになります。一度デプロイが成功すれば、その後は指定のバージョン数だけが残る為、心配は無用です。もしくは、公式サイトで提供されているCLIを使用する方法もあります。

まとめ

本記事で紹介した serverless-prune-plugin プラグインは、Serverless Framework 開発の初期設定で必ず設定しておきたいプラグインです。導入すれば大規模なプロジェクトになった後も、安心してデプロイできます。

サーバーレスの開発はお気軽にお問い合わせください。