AWS CloudFormation
User Guide (API 版本 2010-05-15)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

AWS::AutoScaling::AutoScalingGroup

AWS::AutoScaling::AutoScalingGroup 类型可创建 Auto Scaling 组。

您可为您的 Auto Scaling 组添加 UpdatePolicy 属性,以控制对 Auto Scaling 组的启动配置子网组成员关系进行更改后执行滚动升级更新的方式。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ String, ... ], "Cooldown" : String, "DesiredCapacity" : String, "HealthCheckGracePeriod" : Integer, "HealthCheckType" : String, "InstanceId" : String, "LaunchConfigurationName" : String, "LifecycleHookSpecificationList" : [ LifecycleHookSpecification, ... ], "LoadBalancerNames" : [ String, ... ], "MaxSize" : String, "MetricsCollection" : [ MetricsCollection, ... ], "MinSize" : String, "NotificationConfigurations" : [ NotificationConfiguration, ... ], "PlacementGroup" : String, "Tags" : [ TagProperty, ... ], "TargetGroupARNs" : [ String, ... ], "TerminationPolicies" : [ String, ... ], "VPCZoneIdentifier" : [ String, ... ] } }

属性

AvailabilityZones

包含该组的可用区列表。

Required: Conditional。如果不指定 VPCZoneIdentifier 属性,则必须指定此属性。

Type: List of String values

更新要求无需中断

Cooldown

一项扩展活动完成后到其他深入扩展活动开始前的时间(以秒计)。

Required: No

Type: String

更新要求无需中断

DesiredCapacity

指定 Auto Scaling 组的所需容量。

如果没有为该 Auto Scaling 组在 AWS::AutoScaling::LaunchConfiguration 中设置 SpotPrice,则 Auto Scaling 将基于 DesiredCapacity 开始将实例联机。在达到所需的容量之前,CloudFormation 不会将该 Auto Scaling 组标记为“成功”(通过将其状态设置为 CREATE_COMPLETE)。

如果已设置 SpotPrice,则不会将 DesiredCapacity 作为成功的标准,因为只有匹配 Spot 价格时实例才会启动。但是,在 Spot 价格匹配后,Auto Scaling 会使用 DesiredCapacity 作为组的目标容量。

Required: No

Type: String

更新要求无需中断

HealthCheckGracePeriod

新 EC2 实例开始运行之后、Auto Scaling 开始检查其运行状况之前的时长(以秒计)。

Required: No

Type: Integer

更新要求无需中断

HealthCheckType

您希望检查其运行状况的服务,Amazon EC2 或 Elastic Load Balancer。有效值为 EC2ELB

Required: No

Type: String

更新要求无需中断

InstanceId

要用于创建 Auto Scaling 组的 Amazon EC2 实例的 ID。如果要使用现有 Amazon EC2 实例(而不是启动配置)创建 Auto Scaling 组,请使用此属性。

使用 Amazon EC2 实例创建 Auto Scaling 组时,会先创建新的启动配置,然后将该配置与该 Auto Scaling 组关联。新启动配置从该实例派生其所有属性 (BlockDeviceMappingAssociatePublicIpAddress 除外)。

Required: Conditional。如果不指定 LaunchConfigurationName 属性,则必须指定该属性。

Type: String

更新要求替换

LaunchConfigurationName

指定关联的 AWS::AutoScaling::LaunchConfiguration 资源的名称。

注意

如果此资源具有公有 IP 地址并且还处于同一模板中定义的 VPC 内,则您必须使用 DependsOn 属性声明对 VPC 网关连接的依赖关系。有关更多信息,请参阅 DependsOn 属性

必需:有条件,如果不指定 InstanceId 属性,则必须指定此属性。

Type: String

更新要求无需中断

重要

更新 LaunchConfigurationName 时,现有 Amazon EC2 实例将继续采用它们最初启动时采用的配置运行。要更新现有实例,请为此 Auto Scaling 组指定更新策略属性。有关更多信息,请参阅 UpdatePolicy

LifecycleHookSpecificationList

组的生命周期挂钩,它指定在 Auto Scaling 启动或终止实例时执行的操作。有关更多信息,请参阅 Auto Scaling 用户指南 中的 Auto Scaling 生命周期挂钩

Required: No

类型Auto Scaling AutoScalingGroup LifecycleHookSpecification 的列表

更新要求无需中断

LoadBalancerNames

与此 Auto Scaling 组关联的传统负载均衡器的列表。要指定 应用程序负载均衡器,请使用 TargetGroupARNs

Required: No

Type: List of String values

更新要求无需中断

MaxSize

Auto Scaling 组的最大大小。

Required: Yes

Type: String

更新要求无需中断

MetricsCollection

启用 Auto Scaling 组的组指标监控。

Required: No

类型Auto Scaling AutoScalingGroup MetricsCollection 的列表。

更新要求无需中断

MinSize

Auto Scaling 组的最小大小。

Required: Yes

Type: String

更新要求无需中断

NotificationConfigurations

一个嵌入式属性,它配置一个 Auto Scaling 组以在发生指定事件时发送通知。

Required: No

类型Amazon EC2 Auto Scaling AutoScalingGroup NotificationConfiguration 的列表

更新要求无需中断

PlacementGroup

您希望从中启动实例的现有群集置放群组的名称。置放群组是单个可用区中的实例的逻辑分组。您不能指定多个可用区和置放组。

Required: No

Type: String

更新要求无需中断

Tags

要附加到该资源的 Auto Scaling 标签。有关 Auto Scaling 标签的更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的标记 Auto Scaling 组和 Amazon EC2 实例

Required: No

类型Auto Scaling AutoScalingGroup TagProperty 的列表

更新要求无需中断

TargetGroupARNs

要与 Auto Scaling 组关联的目标组的 Amazon 资源名称 (ARN) 的列表。

Required: No

Type: List of String values

更新要求无需中断

TerminationPolicies

用于选择要终止的实例的一个或一系列策略。将按照排列顺序执行策略。

有关为 Auto Scaling 组配置终止策略的更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的 Auto Scaling 组的实例终止策略

Required: No

Type: List of String values

更新要求无需中断

VPCZoneIdentifier

Amazon Virtual Private Cloud (Amazon VPC) 的子网标识符的列表。

如果指定 AvailabilityZones 属性,则为此属性指定的子网必须位于这些可用区内。

有关详细信息,请转至 Amazon EC2 Auto Scaling 用户指南 中的 Using EC2 Dedicated Instances Within Your VPC

Required: Conditional。如果不指定 AvailabilityZones 属性,则必须指定此属性。

Type: List of String values

更新要求时而中断

注意

更新 VPCZoneIdentifier 时,将替换实例,但不替换 Auto Scaling 组。

返回值

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。

在以下示例中,Ref 函数将返回 MyASGroup Auto Scaling 组的名称,例如 mystack-myasgroup-NT5EUXTNTXXD

{ "Ref": "MyASGroup" }

有关使用 Ref 功能的更多信息,请参阅参考

示例

要查看更多 Auto Scaling 示例,请参阅Auto Scaling 模板代码段

具有 Elastic Load Balancing 负载均衡器、启动配置和指标收集功能的 Auto Scaling 组

JSON

"WebServerGroup" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : "" }, "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MinSize" : "2", "MaxSize" : "2", "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ], "MetricsCollection": [ { "Granularity": "1Minute", "Metrics": [ "GroupMinSize", "GroupMaxSize" ] } ] } }

YAML

WebServerGroup: Type: "AWS::AutoScaling::AutoScalingGroup" Properties: AvailabilityZones: Fn::GetAZs: "" LaunchConfigurationName: Ref: "LaunchConfig" MinSize: "2" MaxSize: "2" LoadBalancerNames: - Ref: "ElasticLoadBalancer" MetricsCollection: - Granularity: "1Minute" Metrics: - "GroupMinSize" - "GroupMaxSize"

批量更新 Auto Scaling 组中的实例

以下示例介绍了如何通过包含 UpdatePolicy 属性来配置更新。该属性包含一个 AutoScalingRollingUpdate 嵌入式数据元,其中有三个指定更新策略设置的属性。

"ASG1" : { "UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "1", "PauseTime" : "PT12M5S" } }, "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } }, "LaunchConfigurationName" : { "Ref" : "ASLC" }, "MaxSize" : "3", "MinSize" : "1" } }

Auto Scaling 组等待来自新实例的信号

在以下示例中,Auto Scaling 组将在 Auto Scaling 继续更新下一批实例前等待新 Amazon EC2 实例向该组发送信号。在 UpdatePolicy 属性中,WaitOnResourceSignals 标记设置为 true。您可对每个实例使用 cfn-signal 帮助程序脚本以向 Auto Scaling 组发送信号。

JSON

"ASG1" : { "UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "1", "PauseTime" : "PT12M5S", "WaitOnResourceSignals" : "true" } }, "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } }, "LaunchConfigurationName" : { "Ref" : "ASLC" }, "MaxSize" : "3", "MinSize" : "1" } }

YAML

ASG1: UpdatePolicy: AutoScalingRollingUpdate: MinInstancesInService: "1" MaxBatchSize: "1" PauseTime: "PT12M5S" WaitOnResourceSignals: "true" Type: "AWS::AutoScaling::AutoScalingGroup" Properties: AvailabilityZones: Fn::GetAZs: Ref: "AWS::Region" LaunchConfigurationName: Ref: "ASLC" MaxSize: "3" MinSize: "1"

另请参阅