EBS スナップショットの作成にかかった時間を SNS 経由でメール通知する方法

Data Lifecycle Manager で EBS スナップショットを作成して EventBridge でデータの取得/整形を行い、SNS でメール通知を行って EBS スナップショットの作成にかかった時間がわかるようにする記事です。
2024.02.09

はじめに

花粉症に苦しめられている Funa です。

EBS スナップショットの作成にかかった時間が知りたいというお問い合わせのため、以下の弊社ブログを参考に検証を実施しましたが AWS サービスや設定内容などが現在と異なっていたため、どのように検証を行ったかを記事にしたいと思います。

構成

上記の弊社ブログにも記載がありますが、EC2 コンソールや CloudTrail からは EBS スナップショットの作成が完了した時間が確認できません。そのため、EventBridge を使用してデータを取得します。

今回は Data Lifecycle Manager で EBS スナップショット作成 → EventBridge でデータの取得/整形 → SNS でメール通知を行います。

構成図スナップ

やってみた

SNS

以下の記事を参考に E メールを受け取りたいメールアドレスを使用して、SNS の設定を完了してください。

Data Lifecycle Manager

準備

EC2 インスタンスを作成し、対象となるボリュームにタグを付与します。今回は Key に Name、Value に testEnv を指定しました。

タグを付与します

Elastic Block Store の中から ライフサイクルマネージャー を開いて[ライフサイクルポリシーを作成]を選択します。

ライフサイクルマネージャー

ポリシータイプの選択

カスタムポリシーを選んで、EBS スナップショットポリシーを選択して[次へ]をクリックします。

ポリシータイプの選択

設定を指定

ターゲットリソースタイプでボリュームを選択し、ターゲットリソースタグでは先ほど指定したように Key に Name、Value に testEnv を指定します。ポリシーの説明を記入したら他はそのままにして[次へ]をクリックします。

ターゲットリソース

スケジュールの詳細

スナップショットの作成頻度や回数、時間などを設定します。入力を終えたら[ポリシーを確認]をクリックします。

スケジュールの詳細

ポリシーの作成が完了

レビューを終えたら[ポリシーを作成]をクリックします。これでポリシーが作成されました。

ポリシーの完成

EventBridge

ルールの作成

EventBridge コンソールを開き、[ルールの作成]をクリックします。

create-rule

ルールの詳細を定義

ルール名を入力し、後はデフォルトのまま[次へ]をクリックします。

define_rule_detail

イベントパターンを構築

イベントソース、サンプルイベント、作成のメソッドはそのままにして、イベントパターンを設定します。
イベントパターンの AWS のサービスで [EC2] を選択、イベントタイプで [EBS Snapshot Notification] を選択し、イベントタイプの仕様 1 では特定の結果を選択して [createSnapshot] を選びます。イベントタイプの仕様 2 では特定の結果を [Succeeded] にしました。後はそのままにして[次へ]をクリックします。

event_pattern

ターゲットを選択

ターゲットタイプはそのままにして、ターゲットを選択で [SNS トピック]を選択します。トピックでは先ほど作成した SNS のトピック名を選択してください。

ターゲット選択

次に追加設定と書かれている箇所をクリックします。ターゲット入力を設定で[入力トランスフォーマー]を選択します。そして[入力トランスフォーマーを設定]をクリックします。

入力トランスフォーマー

ターゲット入力トランスフォーマーでは以下の入力パスを使用します。

{
  "endtime": "$.detail.endTime",
  "result": "$.detail.result",
  "snapshot_id": "$.detail.snapshot_id",
  "starttime": "$.detail.startTime"
}

テンプレートには以下を指定します。

"スナップショットが作成されました。"
"詳細は以下です。"

"結果:<result>"
"スナップショットARN:<snapshot_id>"
"作成開始時間:<starttime>"
"作成終了時間:<endtime>"

[出力を生成]をクリックすると以下のような表示がされます。[確認]をクリックします。

出力を生成

ルールの作成が完了

[レビューと作成 にスキップ]をクリックしてレビューを行い、[ルールの作成]をクリックするとルールが作成されました。

ルール作成されました

通知が無事送信されました

SNS で設定したメールアドレスにスナップショットの作成開始時間と終了時間が記載されたメールが無事届きました。

メール通知

以下のドキュメントに記載があるように、設定された時間ぴったりにスナップショット作成が開始されるわけではないので要注意です。

最初のスナップショット作成オペレーションは、指定された開始時刻から 1 時間以内に開始されます。その後に続くスナップショット作成オペレーションは、スケジュールされた時刻の 1 時間以内に開始されます。

参照

おわりに

簡単に作成できるので、スナップショットの作成開始時間と作成完了時間を確認したい方は一度お試しいただければと思います!