自由気ままに書いちゃおう

好きなことをつらつらと・・・

AWSのライフサイクルマネージャーについて

EBSスナップショットを取得する簡単な方法があったので、
検証してみたいと思います。

 

■ライフサイクルマネージャーとは?


公式サイトは以下のものです。

Amazon EBS スナップショットライフサイクルの自動化 - Amazon Elastic Compute Cloud

引用します。

Amazon EBS ボリュームをバックアップするスナップショットの作成、保持、削除を自動化できます。スナップショット管理を自動化すると、次のことが可能になります。

  • 定期的なバックアップスケジュールを実施して貴重なデータを保護する。

  • 監査担当者または社内のコンプライアンスが必要とするバックアップを保持する。

  • 古いバックアップを削除してストレージコストを削減する。

Amazon CloudWatch Events と AWS CloudTrail のモニタリング機能と組み合わせることで、Amazon Data Lifecycle Manager は EBS ボリューム用の完全バックアップソリューションを追加コストなしで提供します。

■設定の流れについて

0.取得対象となるEBSを識別するためのタグを作成します。
1.対象データを選択するためのポリシーを作成します。
2.ポリシースケジュールを設定します。
3.IAMロールを選択します。
4.タグ付け情報を付与します。
5.ポリシーの概要を確認します。

以下、AWSコンソールでの作業手順です。

■0.取得対象となるEBSを識別するためのタグを作成します。

いきなり何を言っているんだって感じかもですが、理由は次の通りです。
ライフサイクルマネージャーを利用したEBSスナップショットを取得する際、
「タグキー+タグ値」で取得要否を識別する必要があります。
そのため、まずは取得対象となるEBSにタグ名とタグ値を指定することにします。

ここでは、
タグ名:Snapshot
タグ値:yes
のものを、ライフサイクルマネージャーでスナップショット取得の対象としております。

1.取得対象のEBSにタグを追加します。
※追加方法は複数ありますが、分かりやすいのは対象となるEBSを一つずつ開き、
「タグ」タブから登録します。
 こんな感じです。

f:id:guri2o1667:20200806142439p:plain

■1.対象データを選択するためのポリシーを作成します。

1.EC2を開きます。

2.「ライフサイクルマネージャー」を選択します。

f:id:guri2o1667:20200806140530p:plain

3.「スナップショットのライフサイクルポリシーを作成する」をクリックします。

f:id:guri2o1667:20200806140610p:plain

4.以下部分を設定します。

f:id:guri2o1667:20200806141517p:plain

私は以下の通り入力しています。
説明: test-lcp1
リソースタイプを選択: ボリューム
これらのタグを持つターゲット: SnapShot:yes
ライフサイクルポリシータグ: ※今回は設定していません※

f:id:guri2o1667:20200806142648p:plain

■2.ポリシースケジュールを設定します。

f:id:guri2o1667:20200806142717p:plain

私は以下の通り入力しています。
スケジュール: ※デフォルトのまま※
頻度: cron(7 * * * ? *) ※日別、毎週、月別、年間、カスタムCron式から選択
保持タイプ: カウント
保持する: 2

検証なので、Cron式を利用し1時間に1回取得(毎時5分)するようにしています。

ルールのスケジュール式 - Amazon CloudWatch Events

 
尚、1時間が最短取得期間です。1時間未満での取得サイクルは設定できません。

f:id:guri2o1667:20200806152944p:plain

■3.IAMロールを選択します。

※特に変更は不要です。「デフォルトロール」が選択された状態にしてください。

f:id:guri2o1667:20200806143257p:plain

尚、デフォルトで作成した場合、
「AWSDataLifecycleManagerDefaultRole」というロールが新規作成されます。

■4.タグ付け情報を付与します。

ライフサイクルマネージャーにより自動的に作成されたEBSスナップショットには、
デフォルトで以下のものが付与されます。
これは、他の方法で取得されたスナップショットと識別するためです。

aws:dlm:lifecycle-policy-id

aws:dlm:lifecycle-schedule-name


ただし、任意のタグをつけることができます。
今回は、「DLMSnapShot」というタグ名、「yes」というタグ値を設定しています。

f:id:guri2o1667:20200806144948p:plain



■5.ポリシーの概要を確認します。

「作成後のポリシーのステータス: ポリシーを有効にする」が選択されていることを確認し、「ポリシーの作成」をクリックします。

f:id:guri2o1667:20200806144011p:plain

 設定後の画面は以下の通りです。

f:id:guri2o1667:20200806153619p:plain

■注意点

スケジュールされたタイミングにピッタリ取得開始されるわけではありません。

f:id:guri2o1667:20200806151553p:plain

上記は設定時の情報アイコンを表示したものです。
これからもわかる通り、
スナップショットの取得処理が
トリガーされる時間帯を設定している認識でいた方が良いです。
トリガー後の1時間以内に処理が実行されます。
※定刻に取得したスナップショットであるとは限らないので注意してください。

私の場合、毎時7分に取得するようにしていましたが、
実際に取得開始されたのは17分ごろでした。

■取得されたスナップショットについて

下記のように取得できています。

f:id:guri2o1667:20200806152239p:plain


説明列に、

aws:dlm:lifecycle-policy-id

aws:dlm:lifecycle-schedule-name

 が設定されていることがわかります。
また、自分でつけたタグ名(ここでは、DLMSnapShot)も設定されています。

保持数(=世代管理数)を指定しているので、
その内容に従って古いデータは都度削除されていきます。

以上です。