如何使用 AWS CloudFormation 模板管理 AWS Backup 设置?

上次更新时间:2019 年 10 月 28 日

我想使用 AWS Backup 从其他 AWS 资源备份我的数据。此外,我还想使用 AWS CloudFormation 模板管理我的 AWS Backup 配置。该如何操作?

简短描述

您可以使用 支持的 AWS Backup 资源类型创建 CloudFormation 模板。您可以为 AWS Backup 创建的 CloudFormation 模板示例包括:

  • 用于创建备份计划并将资源分配给备份计划的模板。
  • 用于创建备份计划、创建备份文件库以及将资源分配给备份计划的模板。

解决方法

重要提示:您的备份计划必须指定将资源分配至备份计划的标签。在设置备份计划之前,请先确定标签。然后,验证标签是否已分配给正确的资源,并已正确写入备份计划。

用于创建备份计划并将资源分配给备份计划的模板

YAML 中的以下 CloudFormation 模板示例执行以下操作:

  • 创建一个名为 BackupPlanWithThinBackups 的备份计划。
  • 设置要存储在名为默认的文件库中的备份。
  • 创建一个名为 RuleForDailyBackups 的备份规则,该规则计划在上午 11:25 (cron(25 11 ? * * *)) 时运行每日备份。
  • 将备份的生命周期设置为在创建七天后删除。
  • 使用名为 AWSBackupDefaultServiceRole 的 AWS Identity and Access Management (IAM) 角色运行备份作业。
  • 将备份计划分配给所有标记有密钥 backupplan 和值 dsi-sandbox-daily 的资源。
AWSTemplateFormatVersion: 2010-09-09
Description: >-
  Backup Plan template to back up all resources tagged with backupplan=dsi-sandbox-daily at 11:25am
  UTC.
Resources:
  BackupPlanWithThinBackups:
    Type: "AWS::Backup::BackupPlan"
    Properties:
      BackupPlan:
        BackupPlanName: "BackupPlanWithThinBackups"
        BackupPlanRule:
          -
            RuleName: "RuleForDailyBackups"
            TargetBackupVault: Default
            ScheduleExpression: "cron(25 11 ? * * *)"
            Lifecycle:
              DeleteAfterDays: 7
  TagBasedBackupSelection:
    Type: "AWS::Backup::BackupSelection"
    Properties:
      BackupSelection:
        SelectionName: "TagBasedBackupSelection"
        IamRoleArn: !Sub "arn:aws:iam::111122223333:role/service-role/AWSBackupDefaultServiceRole"
        ListOfTags:
         -
           ConditionType: "STRINGEQUALS"
           ConditionKey: "backupplan"
           ConditionValue: "dsi-sandbox-daily"
      BackupPlanId: !Ref BackupPlanWithThinBackups
    DependsOn: BackupPlanWithThinBackups

用于创建备份计划、创建备份文件库以及为备份计划分配资源的模板

YAML 中的以下 CloudFormation 模板示例执行以下操作:

  • 创建名为 BackupVaultWithThinBackups 的备份文件库。
  • 创建一个名为 BackupPlanWithThinBackups 的备份计划。
  • 设置要存储在文件库 BackupVaultWithThinBackups 中的备份。
  • 创建一个名为 RuleForDailyBackups 的备份规则,该规则计划在上午 11:25 (cron(25 11 ? * * *)) 时运行每日备份。这些备份设置为在创建 7 天后删除。
  • 创建一个名为 RuleForWeeklyBackups 的备份规则,该规则计划在每周一上午 11:00 (cron(0 11 ? * 2 *)) 运行每周备份。这些备份设置为在创建 28 天后删除。
  • 创建一个名为 RuleForMonthlyBackups 的备份规则,该规则计划在每月的第一天上午 11:00 (cron (0 11 1 * ? *)) 运行备份。这些备份设置为在创建 90 天后删除。
  • 使用名为 AWSBackupDefaultServiceRole 的 IAM 角色运行备份作业。
  • 将备份计划分配给所有标记有密钥 backup 和值 thinbackup 的资源。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Backup Plan template for thin backups"
Resources:
  BackupVaultWithThinBackups:
    Type: "AWS::Backup::BackupVault"
    Properties:
      BackupVaultName: "BackupVaultWithThinBackups"

  BackupPlanWithThinBackups:
    Type: "AWS::Backup::BackupPlan"
    Properties:
      BackupPlan:
        BackupPlanName: "BackupPlanWithThinBackups"
        BackupPlanRule:
          -
            RuleName: "RuleForDailyBackups"
            TargetBackupVault: !Ref BackupVaultWithThinBackups
            ScheduleExpression: "cron(25 11 ? * * *)"
            Lifecycle:
              DeleteAfterDays: 7
          -
            RuleName: "RuleForWeeklyBackups"
            TargetBackupVault: !Ref BackupVaultWithThinBackups
            ScheduleExpression: "cron(0 11 ? * 2 *)"
            Lifecycle:
              DeleteAfterDays: 28
          -
            RuleName: "RuleForMonthlyBackups"
            TargetBackupVault: !Ref BackupVaultWithThinBackups
            ScheduleExpression: "cron(0 11 1 * ? *)"
            Lifecycle:
              DeleteAfterDays: 90
    DependsOn: BackupVaultWithThinBackups

  TagBasedBackupSelection:
    Type: "AWS::Backup::BackupSelection"
    Properties:
      BackupSelection:
        SelectionName: "TagBasedBackupSelection"
        IamRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSBackupDefaultServiceRole"
        ListOfTags:
         -
           ConditionType: "STRINGEQUALS"
           ConditionKey: "backup"
           ConditionValue: "thinbackup"
      BackupPlanId: !Ref BackupPlanWithThinBackups
    DependsOn: BackupPlanWithThinBackups 

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?