CloudFormationでDLMを使ったEBSを自動バックアップするEC2を起動させてみた

AWS CloudFormationを利用して、Amazon DLMとEC2の起動設定を実装し、自動バックアップを実現してみました。
2018.11.15

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

はじめに

AWSチームのすずきです。

Amazon Data Lifecycle Manager(Amazon DLM)は、EC2がブロックストレージとして利用するEBSのスナップショットの作成、削除(世代管理)を自動化できる、AWSのマネージドサービスです。

【新サービス】EBSスナップショットのライフサイクルを自動化するAmazon DLMが登場!

2018年11月12日、AWS CloudFormation による DLMの設定が可能となるアップデートがありました。

AWS CloudFormation による Amazon Data Lifecycle Manager ポリシーのサポートを導入

今回、このアップデートを利用して、EBSの自動バックアップ設定を有効化したEC2インスタンスの起動を CloudFomationで実現する機会がありましたので、紹介させて頂きます。

構成

  • Amazon DLMライフサイクルポリシー設定と、DLMの処理対象となるEBSボリュームへのタグ付与をCloudFormationで実施しました

テンプレート

DlmServiceRole

  • Amazon DLM動作用のIAMロールを、AWSで用意した管理ポリシー「AWSDataLifecycleManagerServiceRole」を利用して作成しました。
  • 既にAmazon DLMをデフォルトのIAMロールで利用中の環境であれば「arn:aws:iam::xxxxxxxxxxxx:role/service-role/AWSDataLifecycleManagerDefaultRole」の利用が可能です。
  • 遠くない将来、「AWS::IAM::ServiceLinkedRole」による設定が可能になると思われます。
  DlmServiceRole:
    Type: "AWS::IAM::ServiceLinkedRole"
    Properties:
      AWSServiceName: "dlm.amazonaws.com"

DlmLifecyclePolicy

  • Amazon DLM のライフサイクルポリシーとして、スナップショットの作成間隔は24時間毎(1日1回)、7日間保持する設定を行いました。
  • EC2ダッシュボードでは以下に相当する内容を設定しました。

Ec2LaunchTemplate

  • LaunchTemplateを利用する事で、EC2起動時に作成されるEBSへのタグ付けを実施しています。
  • Amazon DLM の処理対象となるタグを、以下の指定でEBSボリュームに付与しています。
        TagSpecifications:
          - ResourceType: volume
            Tags:
              - Key: !Ref 'DlmTargetTag'
                Value: 'true'

Ec2Instance

  • 最新バージョン(LatestVersionNumber)の起動テンプレートを利用してEC2を起動させています。
  • 起動テンプレートの更新をCloudFormationのUpdateStackで実施した場合、新しい起動テンプレートの設定内容が反映されたEC2インスタンスが起動、古いEC2インスタンスは削除されます。
  • EC2インスタンスの交換が望ましくない場合、起動テンプレートのバージョンを固定して利用してください。
    Type: AWS::EC2::Instance
    Properties:
      LaunchTemplate:
        LaunchTemplateId: !Ref 'Ec2LaunchTemplate'
        Version: !GetAtt 'Ec2LaunchTemplate.LatestVersionNumber'

動作確認

EBS

  • LaunchTemplateで指定したDLM処理対象のタグが、EBSボリュームに付与されています。

スナップショット

  • DLMにより指定された時間帯に、EBSスナップショットが作成された事を確認できました。

  • CopyTags オプションを有効とした事で、EBSボリュームに付与したNameタグもスナップショットに反映されています。
            CopyTags: true

まとめ

今回のアップデートにより、EC2インスタンスが利用するEBSボリュームの自動バックアップ設定をCloudFomationで完結させる事ができました。

スナップショットの保持期間や作成頻度など、システム毎にDLMのライフサイクルポリシーを管理する必要が有る場合、有効性が高いと思われますのでぜひご活用ください。