💡

不要なスナップショットを定期的に削除する with Terraform

2024/01/19に公開

初めに

本ページでは、EventBridgeとLambdaを用いて不要なEBSスナップショットを定期的に削除するシステムを作成したため紹介する。ここでの不要なEBSスナップショットとは、既存のAMIに紐づかないスナップショットを意味する。作成されるAWSリソースはTerraformを用いて構成管理される。

システムの概要

システムの構成図を以下に示す。Lambdaは、EventBridgeによって定期実行され、①全てのスナップショットの取得するAPIと②AMIに紐づくスナップショットの取得するAPIを呼び出す。このとき、①-②が既存のAMIに紐づかないスナップショットであり、これを不要なスナップショットとして削除する。IAMやLambdaのソースコードなどは、リポジトリ「aws-terraform-backup」内のterraformコードを確認する。

作成手順

  1. aws-terraform-backupを自分のローカル環境にgit cloneする。※provider.tfは、個人の環境に合わせて設定する。詳細はREADME.mdを確認する。
  2. 以下のコマンドでリポジトリ配下に移動する。
cd aws-terraform-backup
  1. 以下のコマンドを実行する。
terraform init
  1. ルート直下のmain.tfのebs_snapshot_deleteモジュールに以下のパラメータを入力。
module "ebs_snapshot_delete" {
  source               = "./modules/ebs_snapshot_delete"
  prefix               = "tf-ebs-snapshot-delete"
  cron_delete_schedule = "cron(0 22 1 * ? *)"
}

source: そのまま。
prefix: 作成するリソース名すべてに本prefixが付与される。
cron_delete_schedule: EventBridgeの定期実行の頻度をcronで定義。`
5. terraform planで作成されるリソースを確認する。
6. terraform applyでリソースを作成する。

Discussion