DLMでEBSのスナップショットを自動的に作成して、EC2インスタンスを復元する方法


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

お疲れ様です。株式会社協栄情報システム3部所属の比嘉です。

DLMを利用して、EC2のバックアップを取得する方法を紹介していきます。

はじめに

DLM(Data Lifecycle Manager)という、EBSボリュームのスナップショットの作成・保持・削除を自動化できる機能があります。

DLMを利用することで、EBSボリュームをバックアップですることができます。

料金

無料で利用することができます。作成するEBSスナップショットの通常のストレージ料金を支払います。

1.DLMの設定

1.1.ライフサイクルポリシーを作成

・「EC2」→「Elastic Block Store」→「ライフサイクルマネージャー」→「ライフサイクルポリシー」を選択します。

1.2.ポリシータイプを選択

・EBS スナップショットポリシーを選択します。

1.3.設定項目

下記の通りに設定していきます。






項目 設定内容 コメント
ターゲットリソースタイプ ボリューム リソースタイプを選択します(ボリュームorインスタンス)
説明 higa-DLM-Policy ポリシーの説明
ポリシーのステータス 有効 ※補足説明を参照
ターゲットリソースタグ DLM-tag:higa-DLM
ロール名 AWSDataLifecycleManagerDefaultRole IAMロール
ポリシータグ Name:higa-DLM-Policy
スケジュール名 higa-DLM-Schedule スケジュールの名称
頻度 14:00 時から 24 時間ごと UTC時間(日本時間-9時間)、時間間隔の指定
保持 3 最新のスナップショットの保持数
詳細設定(タグ付け) Name:higa-snapshot1
Cost:higa-snapshot1
このスケジュールによって作成されたスナップショットに適用されるタグを指定

補足説明

ポリシーのステータス

作成または変更直後にポリシーを有効にするかどうかを指定します。今すぐこのポリシーを有効にしない場合、手動でアクティベーションステータスを有効に設定するまで、スナップショットまたはAMIの作成は開始されません。

保持タイプ

「カウント方式」と「期間方式」があります。
カウント方式ではスナップショットの数で管理をし、期間方式では保存期間(例えば1か月間のような)で管理します。

IAMロール

IAMロールはAWSから提供されるAWSDataLifecycleManagerDefaultRoleというデフォルトロールを使用するかカスタムIAMロールを作成して使用します。今回はデフォルトロールを使用します。

IAMポリシー

下記はAWSDataLifecycleManagerDefaultRoleのJSONです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateSnapshot",
                "ec2:CreateSnapshots",
                "ec2:DeleteSnapshot",
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes",
                "ec2:DescribeSnapshots",
                "ec2:EnableFastSnapshotRestores",
                "ec2:DescribeFastSnapshotRestores",
                "ec2:DisableFastSnapshotRestores",
                "ec2:CopySnapshot",
                "ec2:ModifySnapshotAttribute",
                "ec2:DescribeSnapshotAttribute"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::snapshot/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags",
                "events:PutRule",
                "events:DeleteRule",
                "events:DescribeRule",
                "events:EnableRule",
                "events:DisableRule",
                "events:ListTargetsByRule",
                "events:PutTargets",
                "events:RemoveTargets"
            ],
            "Resource": "arn:aws:events:*:*:rule/AwsDataLifecycleRule.managed-cwe.*"
        }
    ]
}
項目 説明
Effect Allow(許可)/Deny(禁止)の選択をします
Action 操作内容
Resource 操作対象

"Resource": "*"はすべての対象に適応されます。
"Action": ["ec2:CreateSnapshot",]でEC2のスナップショットが作れます。

2.スナップショットの確認

「EC2」→「Elastic Block Store」→「スナップショット」を選択します。

下記からスナップショットが作成されていることが確認できます。
今回は24時間間隔で日本時刻23時にスナップショットが作成されます。

3.スナップショットからAMIを作成

「スナップショットIDの詳細」→「ボリュームID」を確認します。

下記から「higa-ec2-1」のスナップショットであることが確認できます。

「スナップショットID」→「アクション」→「スナップショットのイメージを作成」を選択します。

下記の通りに設定します。


項目 設定値
イメージ名 higa-AMI1
説明 higa-AMI1(higa-ec2-1)

「イメージ」→「AMI」を選択します。
下記からAMIが作成されたことが確認できました。

4.EC2の復元

「AMI ID」→「AMIからインスタンスの起動」を選択します。

下記の設定をします。
OS、インスタンスタイプ、キーペア、ネットワーク、ストレージ等はEC2と同じ設定をします。


項目 設定値
Name higa-ec2-1-BackUp

「インスタンスの起動」→「インスタンスの表示」を選択します。

これでEC2インスタンスの復元ができました。

おわりに

ここまで読んでいただきありがとうございました。
DLMは自動でスナップショットの作成ができて便利な機能だと思いました。

DLMに似たサービスで「AWS Backup」というサービスがあります。DLMのバックアップ対象は「EBS」のみですが、AWS Backupでは「EC2インスタンス、EBS、RDS、Storage、Gateway、EFS、DynamoDB」と対象が複数あります。
複数サービスを使用したシステムでバックアップをしたい場合はAWS Backupを使用したほうがいいでしょう。

Last modified: 2022-04-19

Author