AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

堆栈资源的更新行为

提交更新时,AWS CloudFormation 会基于提交的内容与堆栈当前模板之间的差异来更新资源。尚未更改的资源在更新过程中会不中断地运行。对于更新后的资源,AWS CloudFormation 使用下列更新行为之一:

无中断更新

AWS CloudFormation 更新资源时不会中断该资源的运行,也不会更改该资源的物理 ID。例如,如果您更新 AWS::CloudTrail::Trail 资源的任何属性,则 AWS CloudFormation 将更新跟踪而不会出现中断。

时而中断更新

AWS CloudFormation 更新资源时会时而中断,并且保留物理 ID。例如,如果您对 AWS::EC2::Instance 资源更新特定属性,则在 AWS CloudFormation 和 Amazon EC2 重新配置实例期间,该实例可能有时会中断。

替换

AWS CloudFormation 会在更新期间重新创建该资源,同时生成新的物理 ID。首先,AWS CloudFormation 会创建替换资源,然后将对其他相关资源的引用更改为指向替换资源,接着再删除原有资源。例如,如果您更新 AWS::RDS::DBInstance 资源类型的 Engine 属性,则 AWS CloudFormation 会创建新资源并将当前数据库实例资源替换为新资源。

AWS CloudFormation 使用的方法取决于您为给定资源类型更新的属性。AWS 资源类型参考中介绍了每个属性的更新行为。

根据更新行为,您可以决定何时修改资源以减小这些更改对应用程序产生的影响。具体来说,您可以计划好更新过程中必须替换 资源的时间。例如,如果您更新 AWS::RDS::DBInstance 资源类型的 Port 属性,则 AWS CloudFormation 将通过使用更新后的端口设置创建新数据库实例来替换数据库实例并删除旧的数据库实例。在更新之前,您可以计划执行以下操作来准备好进行数据库替换:

  • 拍摄当前数据库的快照。

  • 准备一个策略,指定使用该数据库实例的应用程序在数据库实例替换期间将如何处理中断。

  • 确保使用该数据库实例的应用程序考虑更新的端口设置以及您进行的任何其他更新。

  • 使用数据库快照在新数据库实例上还原数据库。

该示例并不详尽;它旨在让您了解针对在更新过程中替换资源的情况,需要计划的事项。

注意

如果模板包括一个或多个嵌套堆栈,则 AWS CloudFormation 也会为每个嵌套堆栈启动更新。为确定嵌套堆栈是否发生过修改,这是必需的。AWS CloudFormation 只更新嵌套堆栈中发生相应模板中指定更改的那些资源。