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 )