Lifecycle Managerを使用してCloudFormationでEBSスナップショット作成の自動化をしてみた。

2021.10.28

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

Data Lifecycle Managerとは?

Data Lifecycle Managerは、EBS スナップショットの作成、保持、削除を自動化するために使用されます。スナップショットを自動化すると, ストレージコストを削減され、貴重なデータを保護されます。

この記事では、Data Lifecycle Managerを使用してEBSスナップショットを自動化してみました。CloudFormationでスナップショットのライフサイクルポリシーを作成しました。このポリシーは、指定されたタグでebsボリュームのスナップショットを作成します。

 

やってみた

EBSボリュームの作成

タグ付きのEBSボリュームを作成しておきます。このボリュームはインスタンスに接続できます。

スナップショットポリシーでは、タグに基づいてEBSを識別するので、EBSにタグが追加されます。

 

スナップショットライフサイクルポリシーの作成

CloudFormationテンプレートにはライフサイクルポリシーとIAMロールがあります。

IAMロール : このポリシーはスナップショットの管理とボリュームの記述するために、アクセス許可を持っています。IAMローはライフサイクルポリシーにアタッチされています。

ライフサイクルポリシー : このライフサイクルポリシーは、04:00(UTC)から24時間ごとにスナップショットを取得します。最大1つのスナップショットが保持されます。EBSボリュームのタグはこのライフサイクルポリシーで指定されています。

 

CloudFormationテンプレート

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  RoleName:
    Description: "Role Name"
    Type: String
    Default: "RoleForDLM"

Resources:
  DLMRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName:
        Fn::Sub: "${RoleName}"
      Path: "/"
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Effect: "Allow"
          Principal:
            Service:
            - dlm.amazonaws.com
          Action:
          - sts:AssumeRole    
      Policies:
      - PolicyName: "DLMPolicy"
        PolicyDocument:
          Version: "2012-10-17"
          Statement:
          - Effect: Allow
            Action:
            - ec2:CreateSnapshot
            - ec2:CreateSnapshots
            - ec2:DeleteSnapshot
            - ec2:DescribeVolumes
            - ec2:DescribeInstances
            - ec2:DescribeSnapshots
            - ec2:CopySnapshot
            Resource: "*"
          - Effect: Allow
            Action:
            - ec2:CreateTags
            Resource: arn:aws:ec2:*::snapshot/*

  LifeCyclePolicy:
    Type: "AWS::DLM::LifecyclePolicy"
    Properties:
      Description: "Lifecycle Policy to automate EBS Snapshots"
      State: "ENABLED"
      ExecutionRoleArn: !GetAtt DLMRole.Arn
      PolicyDetails:
        ResourceTypes: 
          - "VOLUME"
        TargetTags:
          - Key: "EBSVolume"
            Value: "AutomateEBSSnapshot"
        Schedules:
          - Name: "Daily Snapshots of EBS"
            TagsToAdd:
              - Key: "type"
                Value: "DailySnapshot"
            CreateRule:
              Interval: 24
              IntervalUnit: "HOURS"
              Times: 
                - "04:00"
            RetainRule:
              Count: 1
            CopyTags: true

 

デザイナーのテンプレートビュー

 

CloudFormationテンプレートを作成しておきます。

 

これは作成中のライフサイクルポリシーの画像です。

 

 

スナップショットの自動化を確認

以下の画像は、Lifecycle Managerによって作成されたスナップショットです。

 

まとめ

Lifecycle Managerを使用してCloudFormationでEBSスナップショット作成の自動化をしてみました。 Lifecycle Managerを使用してEBS-backed AMIの作成を自動化することも可能です。

Reference : Lifecycle Policy using CloudFormation