EC2をデータライフサイクルマネージャー(DLM)でバックアップ
概要
はじめに
- EC2には、Amazon Data Lifecycle Manager (Amazon DLM) と呼ばれる、EBS ボリュームをバックアップする機能があります。DLMを利用することで、スナップショットの作成、保持、削除が自動化できます。
- これまで、インスタンスに複数のEBS ボリュームが構成されている場合、DLM は対応できない(EBS ボリュームの数だけ、1つずつ設定する必要がある)と思っておりました…。今回、インスタンスに複数のEBS ボリュームがあっても、1つの設定で対応できることを知りました!
スナップショットとは
- EC2のEBS ボリュームからデータをバックアップするための方法です。スナップショットは増分バックアップであり、以前のスナップショット以降に変更されたボリュームデータのみが含まれています。
- 従来(オンプレなど物理サーバー)は、サーバー1台ごとにバックアップを導入する必要がありましたが、スナップショットおよびDLMを利用することで、バックアップの導入・管理に掛かる手間が桁違いに減ります。
DLMの設定方法
ターゲットのリソースタグを使用
- DLM はリソースタグを使用して、バックアップする EBS ボリュームを識別します。ターゲットは、インスタンス or ボリュームを選択します。
- 特定のリソースタグを持つターゲットが対象となるため、改めてタグ付けの重要性を認識しますね。
スナップショットタグを追加
- DLM は、ポリシーによって作成されたすべてのスナップショットに次のタグを適用し、他の方法で作成されたスナップショットと区別します。
- aws:dlm:lifecycle-policy-id
- aws:dlm:lifecycle-schedule-name
設定手順
ターゲットリソースに"Volume"を選択する
- EC2のコンソールより、[ライフサイクルマネージャー] を選択します。
- 続いて、[スナップショットのライフサイクルポリシーを作成する] をクリックします。
- 「ポリシー名」、「resource type」にターゲットとなるリソースは"Volume" or “Instance"のいずれかを選択、ターゲットとなるリソースの「タグ」を選択します。(以下の例は、Volumeを選択し、VolumeのName Tagを指定しています)
- ポリシースケジュールを設定します。「スケジュール名」、「ポリシーを次の時間ごとに実行する時間」、「開始時刻」、「Retain」を指定します。Retainはスナップショットを何世代まで保持するかを入力します。(以下の例は、24時間ごとに、02:00 JSTにスナップショットを取得し、7世代まで保持する指定となります)
- 「ボリュームからタグをコピーする」をチェックします。
- 「IAMロール」をデフォルトロールに、「作成後のポリシーのステータス」を有効に設定して、作成ボタンを押します。
ターゲットリソースに"Instance"を選択する
- 以下の画面は、「resource type」にターゲットとなるリソースを"Instance"と指定した場合の例です。InstanceのName Tagを指定しています。Volumeと異なる点は、ターゲットとなるインスタンスに複数のボリュームが存在する場合に複数のボリュームを対象としてスナップショットを取得します。
- また、"Instance"を指定した場合は、スナップショットにtimestamp、instance-idのタグが付けられます。
- スナップショットのライフサイクルポリシーの作成が完了しました。
バックアップの確認
- 無事に、指定した時間にスナップショットが取得されました。ターゲットとなるリソースとして、「resource type」に"Volume" を選択した場合は対象のEBSのみスナップショットが取得され、"Instance" を選択した場合は対象のインスタンスに構成されている全てのEBSについてスナップショットが取得されました。
- また、DLMによって、いくつかのTagがコピー or 追加されています。
バックアップからの復元
- DLMでバックアップしたスナップショットからインスタンスを復元する場合は、スナップショットを選択して、「イメージの作成」を選択します。作成されたAMI を元に、通常の手順でインスタンスを起動すれば、復元が可能です。
- DLMは、1つの設定で複数のインスタンスに対応できるため、インスタンスの台数が増えても手間は変わらず、大変便利な機能です。ぜひ、お使いください。