AWS CloudFormation
用户指南 (API 版本 2010-05-15)

AWS::AutoScaling::LaunchConfiguration

指定 Auto Scaling 组可用来配置 Amazon EC2 实例的 Amazon EC2 Auto Scaling 启动配置。

重要

在您更新启动配置时,AWS CloudFormation 会删除该资源,并使用更新过的属性和新名称创建新的启动配置。这一更新操作不会对 Auto Scaling 组中正在运行的 Amazon EC2 实例部署任何更改。换句话说,将新启动配置与 Auto Scaling 组进行关联后,所有新实例都将获得更新后的配置,但现有实例继续采用启动时的原始配置运行。这种工作方式与使用启动配置的任何其他 Auto Scaling 组一样。

如果要在更新 LaunchConfiguration 资源时更新现有实例,您必须为 Auto Scaling 组指定 UpdatePolicy 属性。您可以在 AWS::AutoScaling::AutoScalingGroup 文档的示例部分找到滚动更新的示例更新策略。

有关更多信息,请参阅 Amazon EC2 Auto Scaling API 参考中的 CreateLaunchConfigurationAmazon EC2 Auto Scaling 用户指南中的启动配置

语法

要在 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, "LaunchConfigurationName" : String, "PlacementTenancy" : String, "RamDiskId" : String, "SecurityGroups" : [ String, ... ], "SpotPrice" : String, "UserData" : String } }

YAML

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 LaunchConfigurationName: String PlacementTenancy: String RamDiskId: String SecurityGroups: - String SpotPrice: String UserData: String

属性

AssociatePublicIpAddress

用于将实例启动到 Virtual Private Cloud (VPC) 中的组。指定是否向每个实例分配公有 IP 地址。如果指定 true,Auto Scaling 组中的每个实例将收到唯一的公有 IP 地址。

有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的在 VPC 中启动 Auto Scaling 实例

默认值:如果实例在默认子网中启动,则默认分配公有 IP 地址。如果实例在非默认的子网中启动,默认不分配公有 IP 地址。

注意

如果此资源具有公有 IP 地址,并且也位于同一模板中定义的 VPC 中,则必须使用 DependsOn 属性声明 VPC 网关连接的依赖关系。

必需:否

类型:布尔值

Update requires: Replacement

BlockDeviceMappings

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

必需:否

类型BlockDeviceMapping 的列表

Update requires: Replacement

ClassicLinkVPCId

要将您的 EC2-Classic 实例链接到的启用了 ClassicLink 的 VPC 的 ID。

有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的 ClassicLinkAmazon EC2 Auto Scaling 用户指南 中的将 EC2-Classic 实例链接到 VPC

只有在启动 EC2-Classic 实例时才能使用此属性。

必需:否

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

ClassicLinkVPCSecurityGroups

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

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

必需:条件

类型:字符串列表

Update requires: Replacement

EbsOptimized

指定启动配置已针对 EBS I/O 进行优化 (true) 还是未优化 (false)。此优化可为 Amazon EBS 提供专用吞吐量,并提供优化的配置堆栈以实现最佳 EBS I/O 性能。当您对默认未针对 EBS 优化的实例类型启用 EBS 优化时会产生额外费用。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 EBS 优化型实例

默认值为 false

必需:否

类型:布尔值

Update requires: Replacement

IamInstanceProfile

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

有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的针对在 Amazon EC2 实例中运行的应用程序的 IAM 角色

必需:否

类型:字符串

最低1

最高1600

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

ImageId

提供注册期间分配的 Amazon 系统映像 (AMI) 的唯一 ID。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的查找 AMI

必需:是

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

InstanceId

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

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

必需:否

类型:字符串

Update requires: Replacement

InstanceMonitoring

控制是使用详细监控 (true) 还是基本监控 (false) 启动此组中的实例。默认值为 true(已启用)。

重要

在启用详细监控后,Amazon CloudWatch 会每分钟生成指标,并对您的账户收取费用。在禁用详细监控后,CloudWatch 会每隔 5 分钟生成指标。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的 为 Auto Scaling 实例配置监控

必需:否

类型:布尔值

Update requires: Replacement

InstanceType

指定 EC2 实例的实例类型。有关可用实例类型的信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的可用实例类型

必需:是

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

KernelId

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

注意

我们建议您使用 PV-GRUB 而不是内核和 RAM 磁盘。有关更新信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 用户提供的内核

必需:否

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

KeyName

提供 EC2 密钥对的名称。

重要

如果您未指定密钥对,则无法连接到实例,除非您选择配置为允许用户以其他方式登录的 AMI。有关创建密钥对的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Amazon EC2 密钥对

必需:否

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

LaunchConfigurationName

启动配置的名称。对于每个区域、每个账户来说,该名称必须是唯一的。

必需:否

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

PlacementTenancy

实例的租赁方式,可以是 defaultdedicated。租赁方式为 dedicated 的实例在隔离的单租户硬件中运行,并且只能在 VPC 中启动。如果要在共享租期 VPC(实例部署租用属性设置为默认值的 VPC)中启动专用实例,必须将此参数的值设置为 dedicated

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

有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的实例部署租用

必需:否

类型:字符串

最低1

最高64

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

RamDiskId

供选择的 RAM 磁盘的 ID。

注意

我们建议您使用 PV-GRUB 而不是内核和 RAM 磁盘。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的用户提供的内核

必需:否

类型:字符串

最低1

最高255

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

SecurityGroups

一个包含安全组的列表,这些安全组将分配给 Auto Scaling 组中的实例。该列表可能包含现有安全组的 ID,或包含对模板中创建的 SecurityGroup 资源的引用,但不能同时包含二者。

有关更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的 您的 VPC 的安全组

必需:否

类型:字符串列表

Update requires: Replacement

SpotPrice

为完成请求而启动的任何 Spot 实例的最高每小时价格。当您指定的价格超出当前 Spot 市场价格时启动 Spot 实例。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的在 Auto Scaling 组中启动 Spot 实例

如果已设置 Spot 价格,Auto Scaling 组将只在达到 Spot 价格时启动,而不考虑 Auto Scaling 组中 DesiredCapacity 的设置。

注意

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

必需:否

类型:字符串

最低1

最高255

Update requires: Replacement

UserData

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

有关更多信息,请参阅适用于 Linux 的 Amazon EC2 用户指南中的实例元数据和用户数据

必需:否

类型:字符串

最高21847

模式[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*

Update requires: Replacement

返回值

Ref

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。例如:mystack-mylaunchconfig-1DDYF1E3B3I

有关使用 Ref 函数的更多信息,请参阅参考

示例

以下示例创建 Auto Scaling 组可用来配置 Amazon EC2 实例的启动配置。

具有块储存设备映射的启动配置

此示例显示了具有列出以下两个设备的 BlockDeviceMappings 属性的启动配置:映射到 /dev/sda1 的 50 GB EBS 根卷和映射到 /dev/sdm 的 100 GB EBS 卷。/dev/sdm 卷使用基于区域的默认 EBS 卷类型,在终止其连接的实例时不会删除。

JSON

{ "myLaunchConfig":{ "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":"false" } } ] } } }

YAML

myLaunchConfig: 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: "false"

具有 Spot 价格的启动配置

此示例显示在 Auto Scaling 组中启动 Spot 实例的启动配置。该启动配置仅在当前 Spot 价格低于模板规格中的价格 (0.05) 时有效。

JSON

{ "myLaunchConfig":{ "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

myLaunchConfig: 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 实例配置文件的启动配置

此示例显示了使用 IamInstanceProfile 属性的启动配置。仅显示了 AWS::AutoScaling::LaunchConfiguration 规范。如需了解完整模板,包括此处引用为“RootInstanceProfile”的 InstanceProfile 对象的定义和进一步引用,请参阅 auto_scaling_with_instance_profile.template

JSON

{ "myLaunchConfig":{ "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

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

使用预配置 IOPS EBS 卷启动配置

此示例展示将 EbsOptmized 属性配置为使用预配置 IOPS 的 EBS 优化实例启动实例的启动配置。这可以提高 EBS 支持的实例的性能。

注意

对于默认情况下不会进行 EBS 优化的实例,必须启用 EBS 优化,才能达到 Amazon Elastic Compute Cloud 用户指南中的 Amazon EBS 优化的实例文档所述的性能水平。对于最新一代实例类型,EBS 优化功能已默认免费开启。对上一次生成的默认未针对 EBS 优化的实例类型启用 EBS 优化会产生额外费用。

当您使用此类启动配置时,您的 m1.large 实例所包含的优化后 EBS 根卷将具有您在 AMI 中指定的预配置 IOPS 设置。由于您无法在启动配置中指定 IOPS 设置,因此必须使用指定所需的 IOPS 数的块储存设备映射配置 AMI。下面是这个 EBS 优化实例配置的关键属性:

  • m1.large 或更大的实例类型。要进行 EBS 优化,则必需采用此设置。这种优化仅适用于特定实例类型和大小。

  • 具有 io1 卷类型的 EBS 支持的 AMI 以及要为此卷预配置的 IOPS 数。

  • EBS 卷的大小必须能够配合您所需的 IOPS。IOPS 和存储量 (GiB) 之间的比率为 50:1

有关使用预配置 IOPS 卷的 IOPS 性能的更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的预配置 IOPS SSD (io1) 卷

有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的 Linux 实例上的 Amazon EBS 卷性能

JSON

{ "myLaunchConfig":{ "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

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

本页内容: