Amazon CloudFormation 堆栈备份 - Amazon Backup
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon CloudFormation 堆栈备份

CloudFormation 堆栈由多个有状态和无状态资源组成,您可以将这些资源作为单个单元进行备份。换句话说,您可以通过备份堆栈和还原其中的资源来备份和还原包含多个资源的应用程序。堆栈中的所有资源均由堆栈的 Amazon CloudFormation 模板定义。

备份 CloudFormation 堆栈后,将为 CloudFormation 模板以及堆栈中受 Amazon Backup 支持的每项其他资源创建恢复点。这些恢复点一起分组在一个称为复合的总体恢复点中。

此复合恢复点无法还原,但嵌套恢复点可以还原。您可以使用控制台或 Amazon CLI 还原复合备份中的一个或所有嵌套备份。

CloudFormation 应用程序堆栈术语

  • 复合恢复点:用于将嵌套恢复点以及其他元数据分组在一起的恢复点。

  • 嵌套恢复点:资源的恢复点,它是 CloudFormation 堆栈的一部分并作为复合恢复点的一部分进行备份。每个嵌套恢复点都属于一个复合恢复点的堆栈。

  • 复合作业:CloudFormation 堆栈的备份、复制或还原作业,它们可能触发堆栈中单个资源的其他备份作业。

  • 嵌套作业:Amazon CloudFormation 堆栈内资源的备份、复制或还原作业。

CloudFormation 堆栈备份作业

创建备份的过程称为备份作业。CloudFormation 堆栈备份作业具有状态。当备份作业完成时,其状态为 Completed。这表示已创建 Amazon CloudFormation 恢复点(备份)。

CloudFormation 堆栈可以使用控制台进行备份,也可以通过编程方式进行备份。要备份任何资源,包括 CloudFormation 堆栈,请参阅本《Amazon Backup 开发人员指南》中其他地方的创建备份

可以使用 API 命令 StartBackupJob 备份 CloudFormation 堆栈。请注意,文档和控制台指的是复合恢复点和嵌套恢复点;API 语言在相同的上下文关系中使用的是术语“父恢复点和子恢复点”。

CloudFormation 堆栈包含您的 CloudFormation 模板所指示的所有 Amazon 资源。请注意,您的模板可能包含 Amazon Backup 尚不支持的资源。如果您的模板同时包含 Amazon 支持的资源和不支持的资源,则 Amazon Backup 仍会将模板备份到复合堆栈中,但是 Backup 只会创建 Backup 支持的服务的恢复点。CloudFormation 模板中包含的所有资源类型都将包含在备份中,即使您尚未选择使用特定服务(在控制台“设置”中将服务切换为 “已启用”)。

Amazon CloudFormation 恢复点

恢复点状态

当堆栈的备份作业完成(作业状态为 Completed)后,则表示已创建该堆栈的备份。此备份也称为复合恢复点。复合恢复点可以具有以下状态之一:CompletedFailedPartial。请注意,备份作业有状态,恢复点(也称为备份)也有单独的状态。

备份作业完成意味着您的整个堆栈和其中的资源都受到 Amazon Backup 保护。失败状态表示备份作业不成功;导致失败的问题得到纠正后,应重新创建备份。

Partial 状态表示并非堆栈中的所有资源都已备份。如果 CloudFormation 模板包含 Amazon Backup 当前不支持的资源,则可能会发生这种情况,或者如果属于堆栈内资源(嵌套资源)的一个或多个备份作业的状态不是 Completed,也可能会发生这种情况。您可以手动创建按需备份,以重新运行任何导致非 Completed 状态的资源。如果您预期堆栈的状态为 Completed,但它却被标记为 Partial,请检查您的堆栈是否符合上述条件之一。

复合恢复点中的每个嵌套资源都有自己的单独恢复点,每个恢复点都有自己的状态(CompletedFailed)。状态为 Completed 的嵌套恢复点可以还原。

管理恢复点

可以复制复合恢复点(备份);可以复制、删除、取消关联或还原嵌套恢复点。包含嵌套备份的复合恢复点无法删除。在复合恢复点中的嵌套恢复点已删除或解除关联后,您可以手动删除复合恢复点,也可以保留它,直到备份计划生命周期将其删除。

删除恢复点

您可以使用 Amazon Backup 控制台或 Amazon CLI 删除恢复点。

要使用 Amazon Backup 控制台删除恢复点,请执行以下操作:

  1. 打开 Amazon Backup 控制台,网址为:https://console.aws.amazon.com/backup

  2. 单击左导航栏中的受保护的资源。在文本框中键入 CloudFormation 以仅显示您的 CloudFormation 堆栈。

  3. 复合恢复点将显示在恢复点窗格中。可以单击每个恢复点 ID 左侧的加号 (+) 展开每个复合恢复点,显示复合恢复点中包含的所有嵌套恢复点。您可以选中任何恢复点左侧的复选框,将其包含在要删除的恢复点选择中。

  4. 单击删除按钮。

当您使用控制台删除一个或多个复合恢复点时,将弹出一个警告框。此警告框要求您确认删除复合恢复点的意图,包括复合堆栈中的嵌套恢复点。

要使用 API 删除恢复点,请使用 DeleteRecoveryPoint 命令。

将 API 与 Amazon Command Line Interface一起使用时,必须先删除所有嵌套恢复点,然后才能删除复合恢复点。如果您通过发送 API 请求删除其中仍包含嵌套恢复点的复合堆栈备份(恢复点),则该请求将返回错误。

取消嵌套恢复点与复合恢复点的关联

您可以取消嵌套恢复点与复合恢复点的关联(例如,您希望保留嵌套恢复点但删除复合恢复点)。此时两个恢复点都将保留,但它们将不再联系在一起;也就是说,在取消关联后,在复合恢复点上发生的操作将不再应用于嵌套恢复点。

您可以使用控制台取消恢复点的关联,也可以调用 API DisassociateRecoveryPointFromParent。[请注意,API 调用使用“父级”一词来指代复合恢复点。]

复制恢复点

您可以复制复合恢复点,也可以复制嵌套恢复点(如果资源支持跨账户和跨区域复制)。

要使用 Amazon Backup 控制台复制恢复点,请执行以下操作:

  1. 打开 Amazon Backup 控制台,网址为:https://console.aws.amazon.com/backup

  2. 单击左导航栏中的受保护的资源。在文本框中键入 CloudFormation 以仅显示您的 CloudFormation 堆栈。

  3. 复合恢复点将显示在恢复点窗格中。可以单击每个恢复点 ID 左侧的加号 (+) 展开每个复合恢复点,显示复合恢复点中包含的所有嵌套恢复点。您可以单击任何恢复点左侧的辐射状圆形按钮进行复制。

  4. 选中后,单击窗格右上角的复制按钮。

复制复合恢复点时,不支持复制功能的嵌套恢复点最终不会出现在复制的堆栈中。复合恢复点的状态将为 Partial

常见问题

  1. “应用程序备份中包含什么?”

    在使用 CloudFormation 定义的应用程序的每次备份中,都会备份模板、模板中每个参数的处理值以及 Amazon Backup 支持的嵌套资源。嵌套资源的备份方式与备份不属于 CloudFormation 堆栈的单个资源的方式相同。请注意,标记为 no-echo 的参数的值不会被备份。

  2. “我可以备份具有嵌套堆栈的 Amazon CloudFormation 堆栈吗?”

    可以。可以备份包含嵌套堆栈的 CloudFormation 堆栈。

  3. Partial 状态是否意味着创建备份失败?”

    不是。“部分”这一状态表示有些恢复点已备份,而有些则未备份。如果您预期得到 Completed 备份结果,可以检查以下三种情况:

    1. 您的 CloudFormation 堆栈是否包含 Amazon Backup 当前不支持的资源? 有关支持的资源列表,请参阅我们的开发人员指南中的支持的 Amazon 资源和第三方应用程序

    2. 属于堆栈内资源的一个或多个备份作业未成功,必须重新运行该作业。

    3. 已删除嵌套恢复点或已取消它与复合恢复点的关联

  4. “如何在 CloudFormation 堆栈备份中排除资源?”

    当您备份 CloudFormation 堆栈时,可以将资源排除在备份之外。在控制台中,在创建备份计划更新备份计划的过程中,有一个分配资源步骤。在此步骤中,有一个资源选择部分。如果您选择包括特定资源类型并将 CloudFormation 作为要备份的资源,则可以从所选资源类型中排除特定的资源 ID。您还可以使用标签排除堆栈中的资源。

    使用 CLI,您可以:

    • 在您的备份计划中使用 NotResources 从 CloudFormation 堆栈中排除特定资源。

    • 使用 StringNotLike,通过标签排除项目。

  5. “嵌套资源支持哪些类型的备份?”

    嵌套资源的备份可以是完整备份,也可以是增量备份,具体取决于 Amazon Backup 为这些资源提供哪种类型的备份支持。有关更多信息,请参阅增量备份的工作原理。但是请注意,Amazon S3 和 Amazon RDS 嵌套资源不支持 PITR(时间点还原)。

  6. “是否备份作为 CloudFormation 堆栈一部分的更改集?”

    不备份。更改集不会作为 CloudFormation 堆栈备份的一部分进行备份。

  7. “Amazon CloudFormation 堆栈的状态对备份有何影响?”

    CloudFormation 堆栈的状态可能会影响备份。可以备份状态为 COMPLETE 的堆栈,例如状态 CREATE_COMPLETEROLLBACK_COMPLETEUPDATE_COMPLETEUPDATE_ROLLBACK_COMPLETEIMPORT_COMPLETEIMPORT_ROLLBACK_COMPLETE

    如果上传新模板失败且堆栈变为 ROLLBACK_COMPLETE 状态,则会备份新模板,但嵌套资源的备份将基于回滚的资源。

  8. “应用程序堆栈生命周期与其他恢复点生命周期有何不同?”

    嵌套恢复点生命周期由它们所属的备份计划决定。复合恢复点由所有嵌套恢复点中最长的生命周期决定。当复合恢复点中剩下的最后一个嵌套恢复点被删除或取消关联时,复合恢复点也将被删除。

  9. “能否将 CloudFormation 的标签复制到恢复点?”

    是。这些标签将被复制到每个相应的嵌套恢复点。

  10. “删除复合和嵌套恢复点(备份)时是否有一定的顺序?”

    是。必须先删除某些备份,然后才能删除其他备份。只有先删除复合恢复点中的所有恢复点,然后才能删除包含嵌套恢复点的复合备份。复合恢复点不再包含嵌套恢复点后,便可以手动将其删除。否则,将根据其备份计划的生命周期将其删除。

还原堆栈中的应用程序

有关还原嵌套恢复点的信息,请参阅如何还原应用程序堆栈备份