如何使用 AWS CloudFormation 模板管理 AWS Backup 设置?
上次更新时间:2021 年 3 月 1 日
我想使用 AWS Backup 从其他 AWS 资源备份我的数据。此外,我还想使用 AWS CloudFormation 模板管理我的 AWS Backup 配置。该如何操作?
简短描述
您可以使用受支持的 AWS Backup 资源类型创建 CloudFormation 模板。您可以为 AWS Backup 创建的 CloudFormation 模板示例包括:
- 用于创建备份计划并将资源分配给备份计划的模板。
- 用于创建备份计划、创建备份文件库以及将资源分配给备份计划的模板。
解决方法
重要提示:您的备份计划必须指定将资源分配至备份计划的标签。在设置备份计划之前,请先确定标签。然后,验证标签是否已分配给正确的资源,并已正确写入备份计划。
用于创建备份计划并将资源分配给备份计划的模板
YAML 中的以下 CloudFormation 模板示例执行以下操作:
- 创建一个名为 BackupPlanWithThinBackups 的备份计划。
- 设置要存储在名为默认的文件库中的备份。
- 创建一个名为 RuleForDailyBackups 的备份规则,该规则计划在上午 11:25 运行每日备份。
- 启用 Windows VSS。
- 将备份的生命周期设置为在创建七天后删除。
- 将 CopyAction 设置为将备份复制到 us-west-2 AWS 区域进行灾难恢复。
- 使用名为 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"
AdvancedBackupSettings:
-
ResourceType: EC2
BackupOptions:
WindowsVSS: enabled
BackupPlanRule:
-
RuleName: "RuleForDailyBackups"
TargetBackupVault: Default
ScheduleExpression: "cron(25 11 ? * * *)"
Lifecycle:
DeleteAfterDays: 7
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
TagBasedBackupSelection:
Type: "AWS::Backup::BackupSelection"
Properties:
BackupSelection:
SelectionName: "TagBasedBackupSelection"
IamRoleArn: !Sub "arn:aws:iam::111222333444:role/service-role/AWSBackupDefaultServiceRole"
ListOfTags:
-
ConditionType: "STRINGEQUALS"
ConditionKey: "backupplan"
ConditionValue: "dsi-sandbox-daily"
BackupPlanId: !Ref BackupPlanWithThinBackups
DependsOn: BackupPlanWithThinBackups
用于创建备份计划、创建备份文件库以及为备份计划分配资源的模板
YAML 中的以下 CloudFormation 模板示例执行以下操作:
- 创建名为默认的备份文件库。
- 创建一个名为 BackupPlanWithThinBackups 的备份计划。
- 设置要存储在文件库 BackupVaultWithThinBackups 中的备份。
- 创建一个名为 RuleForDailyBackups 的备份规则,该规则计划运行每日备份。这些备份设置为在创建 7 天后删除。
- 启用 Windows VSS。
- 将 CopyAction 设置为将备份复制到 us-west-2 AWS 区域进行灾难恢复。这些备份设置为在创建 14 天后删除。
- 创建一个名为 RuleForWeeklyBackups 的备份规则,该规则计划在每周一上午 11:00 运行每周备份。这些备份设置为在创建 28 天后删除。
- 创建一个名为 RuleForMonthlyBackups 的备份规则,该规则计划在每月的第一天上午 11:00 运行备份。这些备份设置为在创建 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"
AdvancedBackupSettings:
-
ResourceType: EC2
BackupOptions:
WindowsVSS: enabled
BackupPlanRule:
-
RuleName: "RuleForDailyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(25 11 ? * * *)"
Lifecycle:
DeleteAfterDays: 7
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
-
RuleName: "RuleForWeeklyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(0 11 ? * 2 *)"
Lifecycle:
DeleteAfterDays: 28
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
-
RuleName: "RuleForMonthlyBackups"
TargetBackupVault: !Ref BackupVaultWithThinBackups
ScheduleExpression: "cron(0 11 1 * ? *)"
Lifecycle:
DeleteAfterDays: 90
CopyActions:
-
DestinationBackupVaultArn: arn:aws:backup:us-west-2:111222333444:backup-vault:Default
Lifecycle:
DeleteAfterDays: 14
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