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

AWS::EC2::Instance

AWS::EC2::Instance 资源创建 EC2 实例。

如果您的实例已与某个弹性 IP 地址关联,AWS CloudFormation 会在更新实例后重新关联该弹性 IP 地址。有关更新堆栈的详细信息,请参阅 AWS CloudFormation 堆栈更新

语法

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

JSON

{ "Type" : "AWS::EC2::Instance", "Properties" : { "Affinity" : String, "AvailabilityZone" : String, "BlockDeviceMappings" : [ EC2 Block Device Mapping, ... ], "DisableApiTermination" : Boolean, "EbsOptimized" : Boolean, "HostId" : String, "IamInstanceProfile" : String, "ImageId" : String, "InstanceInitiatedShutdownBehavior" : String, "InstanceType" : String, "Ipv6AddressCount" : Integer, "Ipv6Addresses" : [ IPv6 Address Type, ... ], "KernelId" : String, "KeyName" : String, "Monitoring" : Boolean, "NetworkInterfaces" : [ EC2 Network Interface, ... ], "PlacementGroupName" : String, "PrivateIpAddress" : String, "RamdiskId" : String, "SecurityGroupIds" : [ String, ... ], "SecurityGroups" : [ String, ... ], "SourceDestCheck" : Boolean, "SsmAssociations" : [ SSMAssociation, ... ], "SubnetId" : String, "Tags" : [ Resource Tag, ... ], "Tenancy" : String, "UserData" : String, "Volumes" : [ EC2 MountPoint, ... ], "AdditionalInfo" : String } }

YAML

Type: "AWS::EC2::Instance" Properties: Affinity: String AvailabilityZone: String BlockDeviceMappings: - EC2 Block Device Mapping DisableApiTermination: Boolean EbsOptimized: Boolean HostId: String IamInstanceProfile: String ImageId: String InstanceInitiatedShutdownBehavior: String InstanceType: String Ipv6AddressCount: Integer Ipv6Addresses: - IPv6 Address Type KernelId: String KeyName: String Monitoring: Boolean NetworkInterfaces: - EC2 Network Interface PlacementGroupName: String PrivateIpAddress: String RamdiskId: String SecurityGroupIds: - 字符串 SecurityGroups: - 字符串 SourceDestCheck: Boolean SsmAssociations: - SSMAssociation SubnetId: String Tags: - Resource Tag Tenancy: String UserData: String Volumes: - EC2 MountPoint AdditionalInfo: String

属性

Affinity

指示 Amazon Elastic Compute Cloud (Amazon EC2) 是否始终将实例与专用主机关联。如果希望 Amazon EC2 始终在启动实例的主机上重新启动实例(如果实例已停止),请指定 host。如果您希望 Amazon EC2 在任何可用主机上重新启动实例,但尝试在最后运行实例的主机上启动该实例(基于最佳效果),请指定 default

Required: No

Type: String

更新要求无需中断

AvailabilityZone

指定实例所在的可用区的名称。

有关 AWS 区域和可用区的更多信息,请参阅 Amazon EC2 User Guide 中的 Regions and Availability Zones

Required: No。如果未指定该值,系统将根据该区域的负载平衡标准,自动为您选择一个可用区。

Type: String

更新要求替换

BlockDeviceMappings

定义一组 Amazon Elastic Block Store 块储存设备映射、实例存储块储存设备短暂映射或两者。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon Elastic Block StoreAmazon EC2 实例存储

Required: No

Type: Amazon EC2 块储存设备映射属性 列表。

更新要求替换. 如果仅更改一个或多个块储存设备的 DeleteOnTermination 属性,则更新要求无中断

DisableApiTermination

指定是否可通过 API 终止实例。

Required: No

Type: Boolean

更新要求无需中断

EbsOptimized

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

有关可作为 Amazon EBS 优化实例启动的实例类型的更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南中的Amazon EBS 优化实例。使用 Amazon EBS 优化实例会产生额外费用。

Required: No。默认情况下,AWS CloudFormation 将指定 false

Type: Boolean

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例

  • 更新要求替换 对于实例存储支持的实例

HostId

如果为 Affinity 属性指定 host,则为与实例关联的专用主机的 ID。如果未指定 ID,Amazon EC2 将在您账户中任何可用的、兼容的专用主机上启动实例。此类型的启动称作非定向启动。请注意,对于非定向启动,您必须具有一个兼容的专用主机才能成功启动实例。

Required: No

Type: String

更新要求无需中断

IamInstanceProfile

实例配置文件的名称或对 AWS::IAM::InstanceProfile 资源的引用。

有关 IAM 角色的更多信息,请参阅 AWS Identity and Access Management User Guide 中的使用角色

Required: No

Type: String

更新要求无需中断

ImageId

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

Required: Yes

Type: String

更新要求替换

InstanceInitiatedShutdownBehavior

指示当您通过实例操作系统的 shutdown 命令关闭该实例时,其该停止还是终止。您可以指定 stopterminate。有关更多信息,请参阅 Amazon EC2 API Reference 中的 RunInstances 命令。

Required: No

Type: String

更新要求无需中断

InstanceType

实例类型,如 t2.micro。默认类型为 "m3.medium"。有关实例类型列表,请参阅 Instance Families and Types

Required: No

Type: String

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例

  • 更新要求替换 对于实例存储支持的实例

Ipv6AddressCount

要与实例的主网络接口关联的 IPv6 地址的数量。Amazon EC2 将自动选择子网范围内的 IPv6 地址。要指定特定的 IPv6 地址,可使用 Ipv6Addresses 属性且不要指定此属性。

有关支持 IPv6 地址的实例类型的限制,请参阅 Amazon EC2 API Reference 中的 RunInstances 操作。

Required: No

Type: Integer

更新要求替换

Ipv6Addresses

您的子网的 IPv6 CIDR 块范围中的要与实例的主网络接口关联的一个或多个 IPv6 地址。要指定大量 IPv6 地址,可使用 Ipv6AddressCount 属性且不要指定此属性。

有关支持 IPv6 地址的实例类型的限制的信息,请参阅 Amazon EC2 API Reference 中的 RunInstances 操作。

Required: No

Type: EC2 NetworkInterface Ipv6Addresses 列表

更新要求替换

KernelId

内核 ID。

Required: No

Type: String

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例

  • 更新要求替换 对于实例存储支持的实例

KeyName

提供 Amazon EC2 密钥对的名称。

Required: No

Type: String

更新要求替换

Monitoring

指定是否已为实例启用详细监控。

Required: No

Type: Boolean

更新要求无需中断

NetworkInterfaces

说明与此实例关联的网络接口的嵌入式对象的列表。

注意

如果您使用此属性指向网络接口,您必须先终止原始接口,然后再连接新的接口,以便成功更新实例。

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

Required: No

Type: EC2 NetworkInterface 嵌入式属性类型 的列表。

更新要求替换

PlacementGroupName

您希望从中启动实例的现有替换组名称(对于群集实例)。

Required: No

Type: String

更新要求替换

PrivateIpAddress

此实例的私有 IP 地址。

重要

如果对需要替换的实例进行更新,必须分配新的私有 IP 地址。替换期间,AWS CloudFormation 会创建新实例,但在成功更新堆栈之前不会删除旧实例。如果堆栈更新失败,则 AWS CloudFormation 使用旧实例将该堆栈回滚到上一个工作状态。旧实例和新实例的私有 IP 地址不能相同。

(可选)如果您正在使用 Amazon VPC,则可以使用此参数从子网(例如,10.0.0.25)为实例分配一个特定的可用 IP 地址。默认情况下,Amazon VPC 会从子网中为实例选择一个 IP 地址。

Required: No

Type: String

更新要求替换

RamdiskId

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

Required: No

Type: String

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例

  • 更新要求替换 对于实例存储支持的实例

SecurityGroupIds

一个列表,其中包含要分配给 Amazon EC2 实例的 VPC 安全组的安全组 ID。如果指定了 NetworkInterfaces 属性,则不指定此属性。

必填:条件性。VPC 安全组必填。

Type: List of String values

更新要求

  • 对于 VPC 中的实例,为 更新要求无需中断

  • 对于不处于 VPC 中的实例,为 更新要求替换

SecurityGroups

仅对 Amazon EC2 安全组有效。包含要分配到 Amazon EC2 实例的 Amazon EC2 安全组的列表。该列表可能包含现有 Amazon EC2 安全组的名称、对模板中创建的 AWS::EC2::SecurityGroup 资源的引用,或同时包含两者。

Required: No

Type: List of String values

更新要求替换.

SourceDestCheck

控制是否在实例上启用了源/目标检查,并且确定 VPC 中的实例是否会执行网络地址转换 (NAT)。

"true" 值表明已启用源/目标检查,"false" 值则表明已禁用该检查。对于要执行 NAT 的实例,该值必须"false". 有关更多信息,请参阅 Amazon Virtual Private Cloud User Guide 中的 NAT Instances

Required: No

Type: Boolean

更新要求无需中断

SsmAssociations

要与此实例关联的 Amazon EC2 Systems Manager (SSM) 文档和参数值。要使用此属性,您必须为实例指定一个 IAM 角色。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Windows 实例) 中的在 EC2 实例上远程运行命令的先决条件

注意

当前只能为实例关联一个文档。

Required: No

Type: Amazon EC2 实例 SsmAssociations 列表。

更新要求无需中断

SubnetId

如果您正在使用 Amazon VPC,则该属性可指定您希望从中启动实例的子网 ID。如果指定了 NetworkInterfaces 属性,则不指定此属性。

Required: No

Type: String

更新要求替换

Tags

此实例的任意标签组(键/值对)。

Required: No

Type: AWS CloudFormation 资源标签

更新要求无需中断.

Tenancy

要启动的实例的租户,例如 defaultdedicatedhost。如果您指定的租户值为 dedicatedhost,则必须在 VPC 中启动实例。有关更多信息,请参阅 Amazon VPC 用户指南 中的专用实例

Required: No

Type: String

更新要求

  • 如果此属性设置为 dedicated 并且您已将它更改为 host更新要求无需中断,反之亦然。

  • 针对所有其他更改的更新要求替换

UserData

适用于实例的 Base64 编码 MIME 用户数据。

Required: No

Type: String

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例.

    注意

    对于 EBS 支持的实例,更改 UserData 会停止并启动实例;但 Amazon EC2 不会自动运行更新的 UserData。要更新实例配置,请使用 cfn-hup 帮助程序脚本。

  • 更新要求替换 对于实例存储支持的实例。

Volumes

要附加到实例的 Amazon EBS 卷。

注意

断开卷之前,在操作系统中卸载设备上的任何文件系统。如果不卸载文件系统,则卷可能会在断开期间陷入繁忙状态。

Required: No

类型EC2 MountPoint 列表。

更新要求无需中断

AdditionalInfo

预留。

Required: No

Type: String

更新要求

  • 更新要求时而中断 对于 Amazon EBS 支持的实例

  • 更新要求替换 对于实例存储支持的实例

返回值

Ref

如果将 AWS::EC2::Instance 数据元的逻辑 ID 发送至内部 Ref 函数,则会返回该数据元的 InstanceId。例如:i-636be302

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

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

AvailabilityZone

指定实例启动时所在的可用区。例如:us-east-1b

通过使用 Fn::GetAZs 内部函数,您可以检索某个区域的所有可用区列表。

PrivateDnsName

指定实例的私有 DNS 名称。例如:ip-10-24-34-0.ec2.internal

PublicDnsName

指定实例的公有 DNS 名称。例如:ec2-107-20-50-45.compute-1.amazonaws.com

PrivateIp

指定实例的私有 IP 地址。例如:10.24.34.0

PublicIp

指定实例的公有 IP 地址。例如:192.0.2.0

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

示例

具有 EBS Block Device Mapping 的 EC2 实例

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Ec2 block device mapping", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-79fd7eee", "KeyName" : "testkey", "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeType" : "io1", "Iops" : "200", "DeleteOnTermination" : "false", "VolumeSize" : "20" } }, { "DeviceName" : "/dev/sdk", "NoDevice" : {} } ] } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Description: "Ec2 block device mapping" Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-79fd7eee" KeyName: "testkey" BlockDeviceMappings: - DeviceName: "/dev/sdm" Ebs: VolumeType: "io1" Iops: "200" DeleteOnTermination: "false" VolumeSize: "20" - DeviceName: "/dev/sdk" NoDevice: {}

自动分配公有 IP 地址

只有在以下情况下才能将公有 IP 地址与一个网络接口关联:该网络接口具有设备索引 0,并且该网络接口是新的网络接口(而不是现有的)。

JSON

"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "KeyName" : { "Ref" : "KeyName" }, "NetworkInterfaces": [ { "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "GroupSet": [{ "Ref" : "myVPCEC2SecurityGroup" }], "SubnetId": { "Ref" : "PublicSubnet" } } ] } }

YAML

Ec2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: Fn::FindInMap: - "RegionMap" - Ref: "AWS::Region" - "AMI" KeyName: Ref: "KeyName" NetworkInterfaces: - AssociatePublicIpAddress: "true" DeviceIndex: "0" GroupSet: - Ref: "myVPCEC2SecurityGroup" SubnetId: Ref: "PublicSubnet"

其他示例

您可以下载演示如何使用 AWS::EC2::Instance 创建 Virtual Private Cloud (VPC) 的模板:

有关具有 IAM 实例配置文件的 AWS::EC2::Instance 的更多信息,请参阅 Create an EC2 instance with an associated instance profile

有关 Amazon EC2 模板示例的更多信息,请参阅 Amazon EC2 模板代码段

另请参阅