EBS のスナップショットを取得する Data Lifecycle Manager というマネージドサービスがございます。
こちらを一括で設定する CloudFormation のテンプレートを作成しました。
AWSTemplateFormatVersion: "2010-09-09"
Description: "DLM Configuration YAML"
# パラメータセッティング
Parameters:
ProjectName:
Type: String
LotateNum:
Type: Number
Default: 3
GetTime:
Type: String
Default: "18:00"
Resources:
# DLM IAM ロール作成
CreateDlmRole:
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
# DLM 作成
BasicLifecyclePolicy:
Type: "AWS::DLM::LifecyclePolicy"
Properties:
Description: !Join [ "-", [ !Ref ProjectName, dlm ] ]
State: "ENABLED"
ExecutionRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSDataLifecycleManagerDefaultRole"
PolicyDetails:
ResourceTypes:
- "VOLUME"
TargetTags:
-
Key: "dlmtarget"
Value: "true"
Schedules:
-
Name: !Join [ "-", [ !Ref ProjectName, daily-schedule ] ]
TagsToAdd:
-
Key: "type"
Value: !Join [ "-", [ !Ref ProjectName, scheduled-snapshot ] ]
CreateRule:
Interval: 24
IntervalUnit: "HOURS"
Times:
- !Ref GetTime
RetainRule:
Count: !Ref LotateNum
CopyTags: true各種パラメータは下記の通りに設定して下さい。
・ProjectName ⇒ DLM リソース の prefix
・LotateNum ⇒ スナップショットの保持期間を指定
・GetTime ⇒ スナップショットの取得時間を UTCで指定 ( 例:10:00、08:35、02:48 )