#はじめに
本記事は、Amazon Data Lifecycle Manager(DLM)を使用した際の備忘録として記載したものである。
#Amazon Data Lifecycle Manager(DLM)とは
##■概要/特徴
- EBS スナップショットや AMI の作成といったバックアップスケジュールを設定できるAWSサービスである。
- Amazon DLMを使用することで、バックアップの作成、保持、削除を自動化することができる。
- Amazon DLMで指定することができる最大世代数は1000である。
- 2020年3月のアップデートにより、1時間間隔のバックアップスケジュールを作成することが可能になりました。
https://aws.amazon.com/jp/about-aws/whats-new/2020/03/amazon-data-lifecycle-manager-adds-support-for-1-hour-backup-interval/
##■使用する上での注意点
- バックアップスケジュールで指定した時刻から1時間以内にバックアップ処理が実行される仕組みである為、 バックアップで正確な時刻の指定はできない 。
※【例】毎日12時にバックアップするようにスケジュールしても、12時半に取得されることがある。 - 指定する際の時刻はUTCの為、利用者側で日本時刻に修正して設定をする必要がある。
- Amazon DLMは、タグで対象を判別している為、タグが変更された際に検知するソリューションを別途用意する必要がある。
※ターゲットタグを削除または変更してポリシーを変更すると、それらのタグを持つ EBS ボリュームまたはインスタンスはポリシーの管理を受けなくなります。
#作業の実施手順
##(0)前提条件
- 実施環境はAWS CloudShellを使用するものとする。
- Amazon DLM用のIAMロールが既に作成済みであること。※無い場合は以下のコマンドで作成する。
# aws dlm create-default-role
- 本検証で使用するサーバー情報は以下となる。
バックアップボリュームのNameタグ | バックアップ間隔 | 保管世代数 | 備考 |
---|---|---|---|
TestServer_h | 00時00分 | 60世代 | TestServerのHドライブのボリュームを毎日00時に取得するバックアップスケジュール |
##(1)バックアップスクリプトを作成
以下のバックアップスクリプトファイルを作成する。
TestServer_HVolumeDailySnapshot.json
{
"ResourceTypes": ["VOLUME"],
"TargetTags":
[
{
"Key": "Name",
"Value": "TestServer_h"
}
],
"Schedules":
[
{
"Name": "HVolume Daily backup",
"CopyTags": true,
"CreateRule": {
"CronExpression": "cron(00 15 * * ? *)"
},
"RetainRule": {
"Count":60
}
}
]
}
##(2)バックアップスケジュール(ライフサイクルポリシー)を作成
AWS CloudShellで、以下のコマンドを実行する。
※コマンド実行後、「Elastic Block Store > ライフサイクルマネージャー」にバックアップスケジュールが作成される。
aws dlm create-lifecycle-policy \
--description "TestServer-HVolumeDailySnapshot" \
--state ENABLED \
--execution-role-arn arn:aws:iam::××××××××××××:role/service-role/AWSDataLifecycleManagerDefaultRole \
--policy-details "file://TestServer_HVolumeDailySnapshot.json"
上記コマンドで指定した各種オプション
オプション | 説明 |
---|---|
--description | ライフサイクルポリシー(バックアップスケジュール)の説明を記載 |
--state | ライフサイクルポリシーを有効/無効を指定。(ENABLED or DISABLED) |
--execution-role-arn | 対象のarnを指定 |
--policy-details | ライフサイクルポリシーの構成を設定 |
#最後に
■所感
- バックアップスケジュールを作成する際に、タグ名の指定を間違えるとバックアップの処理に失敗するのだが、エラーメッセージなどは特に表示されなかったので、実施後は目視確認が必要だと感じた。
- 今回は、CLI(AWS CloudShell)で実施したが、コンソールでの設定に比べると汎用性が高く、複数台のバックアップスケジュールを作成するのに適していると感じた。
- 気軽にバックアップスケジュールを作成できるので、実用的だと感じた。