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

AWS::AutoScaling::AutoScalingGroup

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

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

语法

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

JSON

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

YAML

Copy
Type: "AWS::AutoScaling::AutoScalingGroup" Properties: AvailabilityZones: - 字符串 Cooldown: String DesiredCapacity: String HealthCheckGracePeriod: Integer HealthCheckType: String InstanceId: String LaunchConfigurationName: String LoadBalancerNames: - 字符串 MaxSize: String MetricsCollection: - MetricsCollection MinSize: String NotificationConfigurations: - NotificationConfigurations PlacementGroup: String Tags: - Auto Scaling Tag TargetGroupARNs: - 字符串 TerminationPolicies: - 字符串 VPCZoneIdentifier: - 字符串

属性

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 作为成功的标准,因为只有匹配现货价格时实例才会启动。但是,在现货价格匹配后,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

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 MetricsCollection 的列表。

更新要求无需中断

MinSize

Auto Scaling 组的最小大小。

Required: Yes

Type: String

更新要求无需中断

NotificationConfigurations

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

Required: No

类型Auto Scaling NotificationConfigurations 的列表

更新要求无需中断

PlacementGroup

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

Required: No

Type: String

更新要求无需中断

Tags

要与此资源相连接的标签。

有关标签的更多信息,请转至 Auto Scaling 用户指南 中的 Tagging Auto Scaling Groups and Amazon EC2 Instances

Required: No

类型Auto Scaling 标签列表

更新要求无需中断

TargetGroupARNs

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

Required: No

Type: List of String values

更新要求无需中断

TerminationPolicies

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

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

Required: No

Type: List of String values

更新要求无需中断

VPCZoneIdentifier

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

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

有关详细信息,请转至 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

Copy
{ "Ref": "MyASGroup" }

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

示例

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

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

JSON

Copy
"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

Copy
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 嵌入式数据元,其中有三个指定更新策略设置的属性。

Copy
"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

Copy
"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

Copy
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"

另请参阅