皆様こんにちは。
今回はCloudFormationを利用して高可用性アーキテクトの構築をしていきます。
この記事ではCloudFormationよりDLMでライフサイクルポリシーの作成を行います。
このブログはCloudFormationによるライフサイクルポリシーの作成をする上での知識を記事としてまとめ再確認し、皆様と共有するため作成します。

1.高可用性アーキテクト構築目次

目次はこちら

2.DLMとは

Amazon Data Lifecycle Manager を使用して、EBS スナップショットと EBS-backed AMI の作成、保持、削除を自動化できます。スナップショットと AMI 管理を自動化すると、次のことができるようになります。
・定期的なバックアップスケジュールを実施して貴重なデータを保護する。
・定期的に更新できる標準化された AMI を作成する。
・監査担当者または社内のコンプライアンスが必要とするバックアップを保持する。
引用:Amazon Data Lifecycle Manager

ライフサイクルポリシー

ライフサイクルポリシーはEBS又はEC2をターゲットに指定し、設定したスケジュールに合わせてスナップショットの作成、保持、削除を自動で行います。

今回はEBSのスナップショットの作成、保持、削除を自動で行いたいため、Amazon Data Lifecycle Managerでライフサイクルポリシーを作成します。

類似サービスとしては一元化されたクラウドバックアップサービスの「AWS Backup」があげられます。

3.フロー図

file
スナップショットの作成、保持、削除を自動化する上でのフローは以下になります。

  1. DLM用のAWS管理ポリシーがアタッチされているデフォルトのIAMロールを作成します。
    CLIのブログで作成したものを今回使用します。
  2. ライフサイクルポリシーを作成します。

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

ライフサイクルポリシー作成のソースコードは下記になります。
ファイル名「ut-DLM-CF」

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  LifecyclePolicy:
  #ライフサイクルポリシー作成
    Type: AWS::DLM::LifecyclePolicy
    Properties:
      Description: "WordpressServer-Snapshot"
      State: ENABLED
      ExecutionRoleArn: arn:aws:iam::xxxxx:role/AWSDataLifecycleManagerDefaultRole
      PolicyDetails:
        ResourceTypes:
        - INSTANCE
        TargetTags:
        - Key: Name
          Value: "ut-wordpress-1"
        - Key: Name
          Value: "ut-wordpress-2"
        Schedules:
        - Name: ut-Snapshot
          CreateRule:
            Interval: 24
            IntervalUnit: HOURS
            Times:
            - '13:00'
          RetainRule:
            Count: 3
          CopyTags: true
      Tags:
      -
        Key: "Name"
        Value: "ut-DLM"

設定項目は下記になります。

使用するオプション 設定値 説明
Description "WordpressServer-Snapshot" 説明を入力
State ENABLED ライフサイクルポリシーを作成時に有効化
ExecutionRoleArn arn:aws:iam::【アカウントID】:role/AWSDataLifecycleManagerDefaultRole IAMロールのARNを指定
Tags Key: "Name"
Value: "ut-DLM"
タグを設定
PolicyDetails 別途記述 ターゲットやスケジュール等の情報

「PolicyDetails」の設定項目は下記の通りです。

使用するオプション 設定値 説明
ResourceTypes INSTANCE "VOLUME"又は"INSTANCE"を選択
今回はEC2を指定するので"INSTANCE"を指定
TargetTags Key: Name
Value: "ut-wordpress-1",
Key: Name
Value: "ut-wordpress-2"
EC2のタグを指定
Schedules 別途記載 スケジュールの設定

「Schedules」の設定項目は下記の通りです。

使用するオプション 設定値 説明
Name ut-Snapshot スケジュール名を入力
CreateRule Interval: 24
IntervalUnit: HOURS
Times:- ’13:00′
24時間間隔で日本時間で午後10時から作成開始
RetainRule count = 3 保持できるスナップショットの数を設定
CopyTags true ターゲットのタグをスナップショットに反映する設定

これでライフサイクルポリシー作成のソースコードの説明は以上になります。

5.検証

作成したライフサイクルポリシーが正常に動作するかの検証をしていきましょう。

ライフサイクルポリシー作成から3日後、マネージメントコンソールのスナップショット一覧からスナップショットが計6つ作成されているか確認してみましょう。

file
今回作成したライフサイクルポリシーからスナップショットが自動作成されていることを確認できました。

さらに1日時間を置き、古いものが自動で削除されるかの確認をします。
file
6/19作成のスナップショットが自動で削除されていることを確認できました。

6.感想

DLMは比較的楽にEBSのスナップショットの自動作成をできて便利だと思いました。
次回もよろしくお願いします。

7.参照

AWS CloudFormation – AWS::DLM::LifecyclePolicy
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-dlm-lifecyclepolicy.html

Last modified: 2022-06-23

Author