はじめに
本記事では、AWS CloudFormation管理コンソールを使って、EBSスナップショットのData Lifecycle Managerを設定する手順を説明しています。(初心者向け)
本記事で掲載しているテンプレートの最新版は、下記に置いてます。
https://github.com/okubo-t/aws-cloudformation
Data Lifecycle Managerとは
Amazon Data Lifecycle Manager (DLM) を利用すると、バックアップしたいEBSとそのバックアップのポリシーを定義するだけで、自動的にスナップショットを取得することができる機能です。
参考
[EBS スナップショットの Amazon Data Lifecycle Manager の概要]
(https://aws.amazon.com/jp/about-aws/whats-new/2018/07/introducing-amazon-data-lifecycle-manager-for-ebs-snapshots/)
[CloudFormation テンプレート リファレンス AWS::DLM::LifecyclePolicy]
(https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-dlm-lifecyclepolicy.html)
前提条件
後述するテンプレートのサンプルでは、スナップショットを取得したいEBSに、Nameタグが設定されていることとしています。
ポリシーは、例として、下記の内容で定義しています。
|ポリシー内容|値|
|:---|:---|:---|
|スナップショット取得間隔|24時間|
|スナップショット取得開始時刻|17:00(UTC)|
|スナップショットの保持世代数|3|
設定手順
1 AWS CloudFormation管理コンソールから、スタックの作成をクリックします。
パラメータ名 | 用途 | 備考 |
---|---|---|
スタックの名前 | テンプレートから作成するリソース一式の名前 | 例 prd-stack-vpc-20180801 |
EBSNameTag | スナップショットを取得したいEBSに設定されているNameタグを指定します |
4 後続は、デフォルトのまま次へ次へで、作成します。
5 状況が CREATE COMPLETEになれば、EBSスナップショットのLifeCycle Managerの設定が完了です。
6 EC2の管理コンソールで、LifeCycle Managerにアクセスすると。ポリシーが設定されていることが確認できます。
テンプレート
AWSTemplateFormatVersion: "2010-09-09"
Description:
Create DLM LifecyclePolicy
# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:
EBSNameTag:
Type: String
# ------------------------------------------------------------#
# DLM LifecyclePolicy
# ------------------------------------------------------------#
Resources:
LifecyclePolicy:
Type: "AWS::DLM::LifecyclePolicy"
Properties:
Description: "Daily EBS Snapshot"
State: "ENABLED"
ExecutionRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/AWSDataLifecycleManagerDefaultRole"
PolicyDetails:
ResourceTypes:
- "VOLUME"
TargetTags:
-
Key: "Name"
Value: !Ref EBSNameTag
Schedules:
-
Name: !Sub "${EBSNameTag}-daily-snapshot"
TagsToAdd:
-
Key: "type"
Value: "DailySnapshot"
CreateRule:
Interval: 24
IntervalUnit: "HOURS"
Times:
- "17:00"
RetainRule:
Count: 3
CopyTags: true