使用 CloudFormation 模板对 ASG 使用 UpdatePolicy 时何时使用 AutoScalingScheduledAction?

When to use AutoScalingScheduledAction when using UpdatePolicy for ASG using CloudFormation template?

任何人都可以向我解释一下吗?我会很高兴举个例子吗?也许是一个虚拟的例子呵呵。我想通过一个很好的例子来真正理解何时以及为什么使用它 :)

谢谢:)

如果您希望在一天、一周或一个月的特定时间特定容量,则使用计划操作。通过使用它,您可以根据 cron 表达式(将触发重复)或指定将在特定日期时间提供此操作的开始日期时间来定义最小和最大容量。

一个示例可能是您的应用程序的测试环境,您只希望它在您的核心工作时间 运行 但晚上和周末您希望它的服务器容量较低甚至可能为零。这将使用表达式。

另一个示例可能是计划维护,在此期间您希望减少服务器池大小,因为不会有流量影响您的应用程序。您将指定一个具体日期。

记住每个动作都需要一个策略,因此如果它需要更改然后恢复到之前的状态,这将是 2 个单独的动作。

这应该只用于固定模式,如果它是基于预测流量你会看看 predictive scaling

CloudFormation 中的 AutoScalingScheduledAction is used when you are updating your AWS::AutoScaling::AutoScalingGroup

通常,当您为 ASG 安排了策略时,实例数会根据策略中的计划上下浮动。当您使用 ASG 更新堆栈时,CloudFormation 将使用模板中定义的组大小。这当然是 有问题的 ,因为您的 计划政策可能生效 并且您的 ASG 可能比模板中的内容更大或更小。因此,更新将强制 ASG 恢复到其原始大小,这可能是不希望的。

AWS CloudFormation always sets the group size property values of your Auto Scaling group to the values that are defined in the AWS::AutoScaling::AutoScalingGroup resource of your template, even if a scheduled action is in effect.

要解决此问题,您可以使用 IgnoreUnmodifiedGroupSizePropertiestrue 的值。这可确保当您的 ASG 更新时,ASG 大小不会更改,并且基于计划策略的 ASG 大小将 preserved.