こんにちは!技術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台に取得されます。
以上、御一読ありがとうございました。
イーゴリ (記事一覧)
クラウドインテグレーション部・エンジニア
特にTerraform(自動化)、ネットワーク系、DNS、VDI、Windows Serverに興味があります
日本国内旅行・ドライブが好きです