こんにちは!技術4課のイーゴリです。
本件の記事では、CloudFormationでAmazon Data Lifecycle Managerを使って、EC2のEBSを自動バックアップする方法をご紹介させて頂きます。

Data Lifecycle Managerの概要説明
Amazon Data Lifecycle Managerは、EBS スナップショットと EBS-backed AMI の作成、保持、削除を自動化するために使用されます。EBS スナップショットを使用することでデータが保護されるのとストレージコストの削減ができます。
本件記事の目標
下記の要件の通りAmazon Data Lifecycle Managerを設定したいと思います。
Windows Server
| 項目 | DLM設定値 | EBSタグ |
|---|---|---|
| Cドライブ(50GB) | 毎日0:00(日本時間)にEBSのスナップショットを取得する。 7日間分のバックアップを保管する。 7日間過ぎたら、一番古い日付のバックアップから削除されるようにする。 |
キー: Backup 値: Daily |
| Dドライブ(200GB) | 毎日0:00(日本時間)にEBSのスナップショットを取得する。 7日間分のバックアップを保管する。 7日間過ぎたら、一番古い日付のバックアップから削除されるようにする。 |
キー: Backup 値: Daily |
CloudFormation
新規作成(Data Lifecycle ManagerのIAMロールが存在しない場合)
Data Lifecycle ManagerのIAMロールを作成
Data Lifecycle ManagerのIAMロール(例:「AWSDataLifecycleManagerDefaultRole」)が存在しない場合、下記のようにIAMロールを作成します。
IAMRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: "AWSDataLifecycleManagerDefaultRole"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "dlm.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/service-role/"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerServiceRole"
上記のYAMLを下記のYAMLで使います。
Data Lifecycle Managerのライフサイクルポリシーの作成
ロールの作成が終わったので、次はData Lifecycle Managerのライフサイクルポリシーを作成し、上記で作成したロールを貼り付けます。
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
DLMLifecyclePolicy:
Type: "AWS::DLM::LifecyclePolicy"
Properties:
Description: "DailyDLM"
ExecutionRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSDataLifecycleManagerDefaultRole"
State: "ENABLED"
PolicyDetails:
PolicyType: "EBS_SNAPSHOT_MANAGEMENT"
ResourceTypes:
- "VOLUME"
ResourceLocations:
- "CLOUD"
TargetTags:
-
Key: "Backup"
Value: "Daily"
Schedules:
-
Name: "DailySnapshots"
CopyTags: true
CreateRule:
Location: "CLOUD"
Interval: 24
IntervalUnit: "HOURS"
Times:
- "15:00"
RetainRule:
Count: 7
Interval: 0
IAMRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: "AWSDataLifecycleManagerDefaultRole"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "dlm.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/service-role/"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerServiceRole"
上記のYAMLをCloudFormationで実施します。
結果の確認
IAMロールの確認

Data Lifecycle Managerのライフサイクルポリシーの確認

YAMLの説明については記事の一番下に記載致します。
Data Lifecycle ManagerのIAMロールが存在している場合
Data Lifecycle Managerのライフサイクルポリシーの作成
Data Lifecycle ManagerのIAMロール(例:「AWSDataLifecycleManagerDefaultRole」)が存在している場合、下記のようにCloud Formationのテンプレートを作成します。
AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
DLMLifecyclePolicy:
Type: "AWS::DLM::LifecyclePolicy"
Properties:
Description: "DailyDLM"
ExecutionRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSDataLifecycleManagerDefaultRole"
State: "ENABLED"
PolicyDetails:
PolicyType: "EBS_SNAPSHOT_MANAGEMENT"
ResourceTypes:
- "VOLUME"
ResourceLocations:
- "CLOUD"
TargetTags:
-
Key: "Backup"
Value: "Daily"
Schedules:
-
Name: "DailySnapshots"
CopyTags: true
CreateRule:
Location: "CLOUD"
Interval: 24
IntervalUnit: "HOURS"
Times:
- "15:00"
RetainRule:
Count: 7
Interval: 0
- 「AWSDataLifecycleManagerDefaultRole」の代わりに適切なData Lifecycle ManagerのIAMロール名を指定してください。
結果の確認

YAMLの説明
[詳細]タブ

- 「PolicyType: "EBS_SNAPSHOT_MANAGEMENT"」がデフォルト設定値のため、書いても書かなくても問題ないです。
- 「EBS-backed AMI ポリシー」の場合、「EBS_SNAPSHOT_MANAGEMENT」から「IMAGE_MANAGEMENT」に変更し、「ResourceTypes」を「INSTANCE」に変更するなどの必要があります。
[スケジュール]タブ

- 「Times: - "15:00"」→UTC時間のため、日本時間の0:00となります。
- 「CopyTags: true」→EBSのタグをコピーしたいため、Trueを設定しました。
- 「Interval: 24」→24時間ごとにスナップショットを取得したいため、「24」を入力しました。
対象EBSにタグを付与
上記の設定だけだと、EBSの指定がないため、対象EC2の必要なEBSを選択します。

対象EBSボリュームを選択し、[タグ]タブを開き、[タグを管理]をクリックします。

私のCloud Formationテンプレートだと、Data Lifecycle Managerのトリガーとしてはタグのキーが「Backup」、タグの値が「Daily」のため、下記の画像の通り設定し、[保存]をクリックします。

TargetTags:
-
Key: "Backup"
Value: "Daily"
動作確認
3日後、結果を見ましたところ、3日間分の2つのEBSボリュームの3世代のバックアップがあります。

Data Lifecycle Managerの特徴
- 例えば0:00を指定した場合、スナップショットの取得の処理はちょうど0:00に始まるのではなく、下記の画像の通り0:00台に取得されます。

以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽