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

AWS::AutoScaling::LaunchConfiguration

AWS::AutoScaling::LaunchConfiguration 类型可创建 Auto Scaling 启动配置,Auto Scaling 组可使用该配置在 Auto Scaling 组中配置 Amazon EC2 实例。

重要

在您更新 LaunchConfiguration 资源的属性时,AWS CloudFormation 会删除该资源,并使用更新过的属性和新名称创建新的启动配置。这一更新操作不会对 Auto Scaling 组中正在运行的 Amazon EC2 实例部署任何更改。换句话说,更新只会替换 LaunchConfiguration。因此,当 Auto Scaling 组启动新实例时,它们将获得更新后的配置,但现有实例继续采用启动时的原始配置运行。如果您手动对 Auto Scaling 组进行了任何类似的更改,此情况同样适用。

如果要在更新 LaunchConfiguration 资源时更新现有实例,您必须为 AWS::AutoScaling::AutoScalingGroup 资源指定更新策略属性。有关更多信息,请参阅 UpdatePolicy

语法

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

JSON

{ "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "AssociatePublicIpAddress" : Boolean, "BlockDeviceMappings" : [ BlockDeviceMapping, ... ], "ClassicLinkVPCId" : String, "ClassicLinkVPCSecurityGroups" : [ String, ... ], "EbsOptimized" : Boolean, "IamInstanceProfile" : String, "ImageId" : String, "InstanceId" : String, "InstanceMonitoring" : Boolean, "InstanceType" : String, "KernelId" : String, "KeyName" : String, "PlacementTenancy" : String, "RamDiskId" : String, "SecurityGroups" : [ SecurityGroup, ... ], "SpotPrice" : String, "UserData" : String } }

YAML

Type: "AWS::AutoScaling::LaunchConfiguration" Properties: AssociatePublicIpAddress: Boolean BlockDeviceMappings: - BlockDeviceMapping ClassicLinkVPCId: String ClassicLinkVPCSecurityGroups: - 字符串 EbsOptimized: Boolean IamInstanceProfile: String ImageId: String InstanceId: String InstanceMonitoring: Boolean InstanceType: String KernelId: String KeyName: String PlacementTenancy: String RamDiskId: String SecurityGroups: - SecurityGroup SpotPrice: String UserData: String

属性

AssociatePublicIpAddress

对 VPC 中的 Amazon EC2 实例,指示 Auto Scaling 组中的实例是否接收公有 IP 地址。如果指定 true,则 Auto Scaling 中的每个实例都会接收一个唯一的公有 IP 地址。

注意

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

Required: No

Type: Boolean

更新要求替换

BlockDeviceMappings

指定块储存设备如何对实例开放。您可以指定虚拟设备和 EBS 卷。

Required: No

类型BlockDeviceMappings 列表。

更新要求替换

ClassicLinkVPCId

要将您的 EC2-Classic 实例链接到的启用了 ClassicLink 的 VPC 的 ID。只能为 EC2-Classic 实例指定此属性。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的 ClassicLink

Required: No

Type: String

更新要求替换

ClassicLinkVPCSecurityGroups

ClassicLinkVPCId 属性中指定的 VPC 的一个或多个安全组的 ID。

Required: Conditional。如果您指定了 ClassicLinkVPCId 属性,则必须指定该属性。

Type: List of String values

更新要求替换

EbsOptimized

指定启动配置是否已针对 EBS I/O 进行优化。该优化将为 Amazon EBS 提供专门的吞吐量,并且提供经过优化的配置堆栈以获得最佳的 EBS I/O 性能。

使用 EBS 优化实例会产生额外费用。有关费用和支持的实例类型的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 EBS 优化的实例

Required: No 如果该属性未指定,则将使用 "false"。

Type: Boolean

更新要求替换

IamInstanceProfile

提供与实例的 IAM 角色关联的实例配置文件的名称或 Amazon 资源名称 (ARN)。该实例配置文件包含 IAM 角色。

Required: No

Type: String(1–1600 个字符)

更新要求替换

ImageId

提供注册期间分配的 Amazon 系统映像 (AMI) 的唯一 ID。

Required: Yes

Type: String

更新要求替换

InstanceId

您希望用来创建启动配置的 Amazon EC2 实例的 ID。如果希望启动配置使用现有 Amazon EC2 实例中的设置,请使用该属性。

使用某个实例创建启动配置时,所有属性都派生自该实例(BlockDeviceMappingAssociatePublicIpAddress 除外)。您可以通过在启动配置中指定属性来覆盖实例中的任何属性。

Required: No

Type: String

更新要求替换

InstanceMonitoring

表示是否为 Auto Scaling 组启用详细实例监控。默认情况下,此属性设置为 true(启用)。

在启用详细监控后,Amazon CloudWatch (CloudWatch) 会每分钟生成指标,并对您的账户收取费用。在禁用详细监控后,CloudWatch 会每隔 5 分钟生成指标。有关更多信息,请参阅《Auto Scaling 开发人员指南》中的监控 Auto Scaling 实例

Required: No

Type: Boolean

更新要求替换

InstanceType

指定 EC2 实例的实例类型。

Required: Yes

Type: String

更新要求替换

KernelId

提供与 EC2 AMI 关联的内核的 ID。

Required: No

Type: String

更新要求替换

KeyName

提供 EC2 密钥对的名称。

Required: No

Type: String

更新要求替换

PlacementTenancy

实例的租期。租期为 dedicated 的实例在单租户硬件上运行,并且只能在 VPC 中启动。如果要在共享租期 VPC(实例部署租用属性设置为默认值的 VPC)中启动专用实例,必须将此参数的值设置为 dedicated。有关更多信息,请参阅 Auto Scaling API 参考 中的 CreateLaunchConfiguration

如果指定此属性,则必须在 AWS::AutoScaling::AutoScalingGroup 资源的 VPCZoneIdentifier 属性中指定至少一个子网。

Required: No

Type: String

更新要求替换

RamDiskId

供选择的 RAM 磁盘的 ID。一些内核启动时需要额外的驱动器。请查看内核要求,了解有关是否需要指定 RAM 磁盘的信息。要查找内核要求,请参阅 AWS 资源中心并搜索相应的内核 ID。

Required: No

Type: String

更新要求替换

SecurityGroups

一个包含 EC2 安全组的列表,这些安全组将分配给 Auto Scaling 组中的 Amazon EC2 实例。该列表可能包含现有 EC 安全组的名称,或包含对模板中创建的 AWS::EC2::SecurityGroup2:: 资源的引用。如果您的实例是在 VPC 内启动,请指定 Amazon VPC 安全组 ID。

Required: No

Type: EC2 安全组列表。

更新要求替换

SpotPrice

该 Auto Scaling 组的现货价格。如果已设置现货价格,则 Auto Scaling 组将在当前现货价格低于模板中指定的金额时启动。

如果您已经为 Auto Scaling 组指定了一个现货价格,则只有在达到现货价格时,Auto Scaling 组才会启动,而不考虑其 DesiredCapacity 中的设置。

有关为 Auto Scaling 组配置现货价格的更多信息,请参阅 AutoScaling Developer Guide 中的 Using Auto Scaling to Launch Spot Instances

Required: No

Type: String

更新要求替换

注意

如果您通过创建新的启动配置更改了投标价格,则目前正在运行的实例将继续运行,直至它们的投标价格超出当前现货价格。

UserData

适用于已启动的 EC2 实例的用户数据。

Required: No

Type: String

更新要求替换

返回值

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

{ "Ref": "LaunchConfig" }

对于逻辑 ID 为 LaunchConfig 的资源,Ref 将返回 Auto Scaling 启动配置名称,如 mystack-mylaunchconfig-1DDYF1E3B3I

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

模板示例

LaunchConfig(具有块储存设备)

该示例介绍了对两个 Amazon Elastic Block Store 映射加以描述的启动配置。

JSON

"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : { "Ref" : "InstanceType" }, "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sda1", "Ebs" : { "VolumeSize" : "50", "VolumeType" : "io1", "Iops" : 200 } }, { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeSize" : "100", "DeleteOnTermination" : "true"} } ] } }

YAML

LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" UserData: Fn::Base64: Ref: "WebServerPort" SecurityGroups: - Ref: "InstanceSecurityGroup" InstanceType: Ref: "InstanceType" BlockDeviceMappings: - DeviceName: "/dev/sda1" Ebs: VolumeSize: "50" VolumeType: "io1" Iops: 200 - DeviceName: "/dev/sdm" Ebs: VolumeSize: "100" DeleteOnTermination: "true"

Autoscaling 组中具有现货价格的 LaunchConfig

此例显示了 AutoScaling 组中具有现货价格的启动配置。该启动配置仅在当前现货价格低于模板规格中的金额 (0.05) 时有效。

JSON

"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "SpotPrice" : "0.05", "InstanceType" : { "Ref" : "InstanceType" } } }

YAML

LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" SecurityGroups: - Ref: "InstanceSecurityGroup" SpotPrice: "0.05" InstanceType: Ref: "InstanceType"

具有 IAM 实例配置文件的 LaunchConfig

下面是一个使用 IamInstanceProfile 属性的启动配置。

仅显示了 AWS::AutoScaling::LaunchConfiguration 规范。如需了解完整模板,包括此处引用为 "RootInstanceProfile" 的 AWS::IAM::InstanceProfile 数据元的定义和进一步引用,请参阅 auto_scaling_with_instance_profile.template

JSON

"myLCOne": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Properties": { "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "InstanceType": { "Ref": "InstanceType" }, "IamInstanceProfile": { "Ref": "RootInstanceProfile" } } }

YAML

myLCOne: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" InstanceType: Ref: "InstanceType" IamInstanceProfile: Ref: "RootInstanceProfile"

具有指定 PIOPS 的 EBS 优化卷

您可以使用所包含的 EBS 优化卷具有指定 PIOPS 的自动扩展实例创建一个 AWS CloudFormation 堆栈。这可以提高受 EBS 支持的实例的性能,Amazon Elastic Compute Cloud User Guide 中的 Increasing EBS Performance 对此有详细介绍。

当您创建与此类似的启动配置时,请务必将 InstanceType 至少设置为 m1.large 并将 EbsOptimized 设置为 true。您的已启动实例将包含优化的 EBS 根卷 (具有您在创建 AMI 时选择的 PIOPS)。

警告

使用 EBS 优化实例会产生额外费用。有关详细信息,请参阅 Amazon Elastic Compute Cloud User Guide 中的 EBS-Optimized Instances

由于您无法重写 Auto Scaling 启动配置中的 PIOPS 设置,因此必须通过指定所需 PIOPS 的块储存设备映射对启动配置中的 AMI 进行配置。您可以通过创建具有以下特性的自有 EC2 AMI 来执行此操作:

  • m1.large 或更大的实例类型。要进行 EBS 优化,则必需采用此设置。

  • 卷类型为 "io1" 的 EBS 支持型 AMI,以及您希望由 Auto Scaling 启动的实例达到的 IOPS 次数。

  • EBS 卷的大小必须能够配合您所需的 IOPS。IOPS 和存储量(吉字节,GiB)之间的比率为 10:1,因此 PIOPS 要达到 100,至少需要 10 GiB 根卷存储量。

请在您的 Auto Scaling 启动配置中使用此 AMI。例如,一个具有 PIOPS 且 AMI ID 为 ami-7430ba44 的 EBS 优化 AMI 在启动配置中的使用情况如下:

JSON

"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : "ami-7430ba44", "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" } }, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : "m1.large", "EbsOptimized" : "true" } }

YAML

LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: "ami-7430ba44" UserData: Fn::Base64: Ref: "WebServerPort" SecurityGroups: - Ref: "InstanceSecurityGroup" InstanceType: "m1.large" EbsOptimized: "true"

另请参阅