使用回滚触发器在突破警报阈值时回滚 CloudFormation 堆栈
利用回滚触发器,您可让 Amazon CloudFormation 在堆栈创建和更新期间监控应用程序的状态,并可在应用程序超出您指定的警报阈值时回滚操作。对于您创建的每个回滚触发器,您需要指定 CloudFormation 应监控的 CloudWatch 警报。CloudFormation 会在堆栈创建或更新操作期间以及所有资源部署完毕之后的指定时间段内,一直监控指定的警报。在堆栈操作或监控期间,如果有任何警报进入 ALARM
状态,CloudFormation 就会回滚整个堆栈操作。
您可以将监控时间设置为 0 (默认值) 到 180 分钟之间。在堆栈创建或更新操作部署了所有必需的资源之后,CloudFormation 仍会在这段时间内监控所有的回滚触发器。在堆栈操作或监控期间,如果有任何警报进入 ALARM
状态,CloudFormation 就会回滚整个堆栈操作。对于更新操作,如果监控期间结束而没有任何警报进入 ALARM
状态,CloudFormation 将继续照常处置旧资源。如果您设置了监控时间,但没有指定任何回滚触发器,CloudFormation 仍然会等待指定的时长,然后清理掉更新操作的旧资源。您可以使用此监控期间来执行任何所需的手动堆栈验证,然后根据需要手动取消堆栈创建或更新操作。如果您将监控时间设置为 0 分钟,CloudFormation 仍会在堆栈创建和更新操作期间监控回滚触发器,并在有警报进入 ALARM
状态时回滚操作。对于没有发生警报的更新操作,系统会在该操作完成时立即开始处置旧资源。
默认情况下,CloudFormation 仅在警报进入 ALARM
状态(而不是 INSUFFICIENT_DATA
状态)时才回滚堆栈操作。如果还要让 CloudFormation 在有警报进 INSUFFICIENT_DATA
状态时回滚堆栈操作,请编辑 CloudWatch 警报以便将缺少数据视为 breaching
。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的配置 CloudWatch 警报处理缺少数据的方式。
在更新操作期间回滚堆栈时,CloudFormation 不会监控回滚触发器。
您可以添加最多 5 个回滚触发器。要添加回滚触发器,请指定 CloudWatch 警报的 Amazon 资源名称(ARN)。目前,AWS::CloudWatch::Alarm
和 AWS::CloudWatch::CompositeAlarm
类型可以用作回滚触发器。有关 CloudWatch 警报的更多信息,请参阅《Amazon CloudWatch 用户指南》中的使用 Amazon CloudWatch 警报。
如果给定的 CloudWatch 警报缺失,则整个堆栈操作都会失败并且回滚。
请注意,访问 CloudWatch 需要凭证。这些凭证必须有权访问 Amazon 资源,例如检索有关您的资源的 CloudWatch 指标数据。有关更多信息,请参阅《Amazon CloudWatch 用户指南》中的 Amazon CloudWatch 的身份验证和访问控制。
在堆栈创建或更新期间添加回滚触发器
将回滚触发器添加到堆栈创建或更新
-
输入一个介于
0
到180
分钟之间的监控时间。默认值为0
。 -
指定要用作回滚触发器的 CloudWatch 警报或复合警报的 ARN,然后单击 Add CloudWatch alarm ARN(添加 CloudWatch 警报 ARN)。
例如,以下是 CloudWatch 警报或复合警报的 ARN,
arn:aws:cloudwatch:
。us-east-1
:123456789012:alarm:MyAlarmName
-
选择 Next(下一步)并查看堆栈的详细信息。
-
审核堆栈创建设置和堆栈评估成本之后,选择创建堆栈,以启动您的堆栈。
将回滚触发器添加到更改集
要将回滚触发器添加到更改集,请通过选择堆栈模板创建更改集,并在回滚配置部分指定 CloudWatch 警报。
-
在创建或更新更改集期间,在 Configure stack options(配置堆栈选项)页面的 Advanced options(高级选项)下,展开 Rollback configuration(回滚配置)部分。
-
输入一个介于
0
到180
分钟之间的监控时间。默认值为0
。 -
指定要用作回滚触发器的 CloudWatch 警报或复合警报的 ARN,然后单击 Add CloudWatch alarm ARN(添加 CloudWatch 警报 ARN)。
例如,以下是 CloudWatch 警报或复合警报的 ARN,
arn:aws:cloudwatch:
。us-east-1
:123456789012:alarm:MyAlarmName
-
选择 Next(下一步)并查看堆栈的详细信息。
-
审核堆栈创建设置和堆栈评估成本之后,选择 Create change set(创建更改集)。
-
查看 Create change set(创建更改集)模块,然后选择 Create change set(创建更改集)。
-
(可选)要基于更改集完成创建新堆栈,请选择 Execute(执行),指定回滚配置,然后选择 Execute change set(执行更改集)。
查看堆栈的回滚触发器
要查看堆栈的回滚触发器,请查看 Rollback configuration(回滚配置)部分。
-
在 Stacks(堆栈)页面上,从左侧列表中选择要查看的堆栈。
-
在 Stack info(堆栈信息)选项卡上,展开 Rollback configuration(回滚配置)部分。
结果:如果指定了回滚触发器,回滚触发器将在 Rollback configuration(回滚配置)部分显示。
查看更改集的回滚触发器
要查看更改集的回滚触发器,请查看 Rollback configuration(回滚配置)部分。
-
在 Stacks(堆栈)页面上,从左侧列表中选择要查看的堆栈。
-
选择 Change sets(更改集)选项卡,然后选择要查看的更改集。
-
选择 Input(输入)选项卡,然后查看 Rollback configuration(回滚配置)部分。
结果:如果指定了回滚触发器,回滚触发器将在 Rollback configuration(回滚配置)部分显示。