EBS 自動スナップショット作成について

この記事は最終更新から7年以上経過しています。内容が古くなっている可能性があります。

様々なリソースをAWS上で運用していると、RDSだけでなくEC2も定期的にバックアップを取得したくなる時があります。
そんな時にお手軽に設定できる方法を説明させて頂きます。

目次

バックアップ取得について

以前はAWS LambdaやAWS Command Line Interfaceを利用して取得する必要がありましたが、今はCloudWatch Eventsから簡単に設定出来ます。

  1. まずはAWS Management ConsoleでCloudWatchダッシュボードを選択し、イベントのルールで必要な事柄を設定していきます。
  2. ルールの作成をします。まずはスケジュールとターゲットを設定します。
    スケジュールに入れる時刻はUTCなので注意が必要です。
    ターゲットの項目で[EC2 CreateSnapshot API呼び出し]を選択し、取得したいボリュームIDを入れます。

    今回は例として毎朝6時(日本時間)に特定のEBSのスナップショットを取得するように設定しました。
  3. ルールの詳細を設定します。

CloudWatch Evensからリソースを操作するために、IAMロールが必要になります。
ここでは下記のようなRoleを使用しました。

以上で自動スナップショット作成が完了です。
注意点として現状ではCloudWatchEventsではSnapshotにTagをつけることができません。

バックアップの削除

さて、次はスナップショット削除の自動化についてです。
取得したスナップショットを特定の世代数で管理しましょう。
古いスナップショットの削除については、残念ながらCloudWatch Eventsでは実施出来ません。
そのため、別の方法が必要なので今回はAWS Lambda(Python3.6)を利用してみました。

  • 管理したい世代数をkeep_backupsに設定します。
  • ‘対象ボリュームのID’ を設定します。

上記の注意点として、ボリュームIDとTagが存在していないスナップショットを削除の対象にしています。
もし手動で取得したスナップショットがある場合は、Tag付けが必要になります。

作成した関数のトリガーを設定します。
トリガータブを選択し、下記のように設定してします。

今回はスナップショット取得1時間後に削除処理が実施されるようにスケジュールしました。

以上で設定は完了です。

まとめ

CloudWatchEventsからもスナップショットの削除したいな、取得したスナップショットにTagが付けれたらな等の希望もありますが、それでも十分便利な機能ではあるので助かりますね。


 

 

よかったらシェアしてね!
  • URLをコピーしました!
目次