亚马逊AWS官方博客

AWS Backup 的新增功能 — 保护和还原您的 CloudFormation 堆栈



要定义应用程序的数据保护策略,必须查看其组件并找出哪些组件存储了需要保护的数据。这些是应用程序的有状态组件,如数据库和文件系统。其他组件不存储数据,但也需要还原以防出现问题。这些是无状态组件,例如容器及其网络配置。

当您使用基础设施即代码(IaC)管理应用程序时,您只有一个存储库,其中描述了所有这些组件。我们可以使用这些信息来帮助保护您的应用程序吗? 没错! AWS Backup 现在支持将 AWS CloudFormation 堆栈附加到您的数据保护策略中。

当您使用 CloudFormation 作为资源时,AWS Backup 支持的所有有状态组件大约在同一时间备份。备份还包括堆栈中的无状态资源,例如 AWS Identity and Access Management (IAM) 角色和 Amazon Virtual Private Cloud (Amazon VPC) 安全组。这为您提供了一个恢复点,您可以用来恢复应用程序堆栈或所需的单个资源。在恢复的情况下,您无需将自动化工具与自定义脚本和手动活动混合使用即可恢复并将整个应用程序堆栈重新组合在一起。当您对使用 CloudFormation 管理的应用程序进行现代化和更新时,AWS Backup 会自动跟踪更改并为您更新数据保护策略。

CloudFormation 对 AWS Backup 的支持还可以帮助您证明您的数据保护政策合规性。您可以在 AWS Backup Audit Manager 中监控您的应用程序资源,这是 AWS Backup 的一项功能,可让您审计和报告数据保护策略的合规性。您还可以使用 AWS Backup Vault Lock 根据合规义务的要求管理备份的不变性。

我们来看看这些步骤的实际操作。

使用 AWS Backup 支持 CloudFormation 堆栈
首先,我需要为 AWS Backup 打开 CloudFormation 资源类型。在 AWS Backup 控制台中,我在导航窗格中选择Settings(设置),然后在 Service opt-In(服务选择加入)部分中选择 Configure resources(配置资源)。然后,我切换至 CloudFormation 资源类型,并选择 Confirm(确认)。

控制台屏幕截图。

现在已启用 CloudFormation 支持,我在导航窗格中选择仪表板,然后选择创建备份计划。我选择 Start with a template(使用模板启动)选项,然后是 Daily-35day-Retention 模板。顾名思义,此模板创建每日备份,这些备份会保存 35 天,然后自动删除。我输入备份计划的名称,然后选择创建计划

控制台屏幕截图。

现在,我可以为我的备份计划分配资源。我输入资源分配名称并使用默认的 IAM 角色,该角色是使用正确的权限自动创建的。

控制台屏幕截图。

资源选择中,我可以选择包括所有资源类型以自动保护账户中启用的所有资源类型。因为我想展示 CloudFormation 支持是如何工作的,所以我选择包括特定资源类型,然后在选择资源类型下拉菜单中选择 CloudFormation。在选择资源菜单中,我可以使用所有支持的 CloudFormation 堆栈选项来保护我的所有堆栈。为简单起见,我选择只保护一个堆栈,即 my-app 堆栈。

控制台屏幕截图。

我将其他选项保留为默认值,然后选择分配资源。就这么简单! 现在,我选择的 CloudFormation 堆栈将每天备份,保留 35 天。那意味着什么? 让我们来看看当我创建 CloudFormation 堆栈的按需备份时会发生什么。

为 CloudFormation 堆栈创建按需备份
我在导航窗格中选择受保护的资源,然后选择创建按需备份。接下来的步骤与我之前为备份计划分配资源时所做的步骤类似。我选择 CloudFormation 资源类型和 my-app 堆栈。我使用立即创建备份选项在一小时内开始备份。我选择 7 天保留期和默认备份保管库。备份库是用于存储和组织备份的逻辑容器。我选择默认 IAM 角色并选择创建按需备份

控制台屏幕截图。

几分钟之内,备份作业就开始运行了。我展开 Backup jobs(备份任务)列表中的 Backup job ID(备份任务 ID),以查看正在备份的资源。有状态资源(如 Amazon DynamoDB 表和 Amazon Relational Database Service (RDS) 数据库)与备份作业的当前状态一起列出。我的堆栈中的无状态资源(例如 IAM 角色、AWS Lambda 函数和 VPC 配置)由具有 CloudFormation 资源类型的任务进行备份。

控制台屏幕截图。

备份任务完成后,我返回受保护的资源页面,查看现在可以还原的资源列表。在列表中,我看到了有状态资源(在本例中为两个 DynamoDB 表和一个 Aurora 数据库)和 CloudFormation 堆栈的 ID。如果我选择每种有状态的资源,我会看到可用的恢复点对应于备份该资源时的不同时间点。

控制台屏幕截图。

如果我选择 CloudFormation 堆栈,我会得到一份复合恢复点列表。每个复合恢复点都包括堆栈中所有无状态和有状态的资源。更具体地说,无状态资源包含在 CloudFormation 模板恢复点(以下屏幕截图中的最后一个)中。

控制台屏幕截图。

还原 CloudFormation Backup
在复合恢复点内,我选择 CloudFormation 堆栈的恢复点并选择 Restore(还原)。还原 CloudFormation 堆栈备份会创建一个带有代表备份的更改集的新堆栈。我进入新堆栈并更改集名称,然后选择还原备份。几分钟后,还原任务就完成了。

CloudFormation 控制台中,正在审查新堆栈。我需要应用更改集。

控制台屏幕截图。

我选择了新堆栈,然后选择还原任务创建的更改集来应用更改集。

控制台屏幕截图。

一段时间后,我的原始堆栈中的资源已在新堆栈中重新创建。状态资源已重新创建为空。要恢复有状态的资源,我可以返回恢复点列表,选择我需要的恢复点,然后启动还原。

可用性和定价
AWS Backup 当前在所有提供 AWS Backup 的 AWS 区域中使用控制台、AWS Command Line Interface (CLI)AWS SDK 对 CloudFormation 提供支持。AWS Backup 备份和还原的无状态资源不会产生额外费用。您只需为数据库、存储卷或文件系统等状态资源付费。有关更多信息,请参阅 AWS Backup 定价

现在,您可以使用自动化的解决方案来创建和还原应用程序,简化体验,无需管理自定义脚本。

Danilo