AWS::EC2::Instance - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::EC2::Instance

指定 EC2 实例。

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

语法

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

JSON

{ "Type" : "AWS::EC2::Instance", "Properties" : { "AdditionalInfo" : String, "Affinity" : String, "AvailabilityZone" : String, "BlockDeviceMappings" : [ BlockDeviceMapping, ... ], "CpuOptions" : CpuOptions, "CreditSpecification" : CreditSpecification, "DisableApiTermination" : Boolean, "EbsOptimized" : Boolean, "ElasticGpuSpecifications" : [ ElasticGpuSpecification, ... ], "ElasticInferenceAccelerators" : [ ElasticInferenceAccelerator, ... ], "HibernationOptions" : HibernationOptions, "HostId" : String, "HostResourceGroupArn" : String, "IamInstanceProfile" : String, "ImageId" : String, "InstanceInitiatedShutdownBehavior" : String, "InstanceType" : String, "Ipv6AddressCount" : Integer, "Ipv6Addresses" : [ InstanceIpv6Address, ... ], "KernelId" : String, "KeyName" : String, "LaunchTemplate" : LaunchTemplateSpecification, "LicenseSpecifications" : [ LicenseSpecification, ... ], "Monitoring" : Boolean, "NetworkInterfaces" : [ NetworkInterface, ... ], "PlacementGroupName" : String, "PrivateIpAddress" : String, "RamdiskId" : String, "SecurityGroupIds" : [ String, ... ], "SecurityGroups" : [ String, ... ], "SourceDestCheck" : Boolean, "SsmAssociations" : [ SsmAssociation, ... ], "SubnetId" : String, "Tags" : [ Tag, ... ], "Tenancy" : String, "UserData" : String, "Volumes" : [ Volume, ... ] } }

属性

AdditionalInfo

此属性保留供内部使用。如果您使用此属性,堆栈将失败并显示此错误:Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX)

必需:否

类型:字符串

Update requires: Some interruptions

Affinity

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

必需:否

类型:字符串

Update requires: Some interruptions

AvailabilityZone

实例的可用区。

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

DescribeImageAttribute 不支持此参数。

必需:否

类型:字符串

Update requires: Replacement

BlockDeviceMappings

定义在启动时要附加到实例的块储存设备的块储存设备映射条目。

默认情况下,使用 AMI 的块储存设备映射中指定的块储存设备。您可以使用实例块储存设备映射覆盖 AMI 块储存设备映射。对于根卷,您只能覆盖卷大小、卷类型、卷加密设置和 DeleteOnTermination 设置。当实例运行后,您只能修改附加的 EBS 卷的 DeleteOnTermination 设置。

必需:否

类型BlockDeviceMapping 的列表

Update requires: Some interruptions

CpuOptions

实例的 CPU 选项。

必需:否

类型CpuOptions

Update requires: Replacement

CreditSpecification

可突增性能实例的 CPU 使用率的积分选项。有效值为 standardunlimited。要在启动后更改此属性,请使用 ModifyInstanceCreditSpecification。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的突发性能实例

默认值:standard(T2 实例)或 unlimited(T3/T3a 实例)

必需:否

类型CreditSpecification

Update requires: No interruption

DisableApiTermination

如果您将此参数设置为 true,则无法使用 Amazon EC2 控制台、CLI 或 API 终止该实例;否则,您可以做到这一点。要在启动后更改此属性,请使用 ModifyInstanceAttribute。或者,如果您将 InstanceInitiatedShutdownBehavior 设置为 terminate,则可以通过从实例运行 shutdown 命令终止该实例。

默认值:false

必需:否

类型:布尔值

Update requires: No interruption

EbsOptimized

指示是否针对 Amazon EBS I/O 优化实例。这种优化为 Amazon EBS 提供专用吞吐量,并提供优化的配置堆栈以获得最佳的 Amazon EBS I/O 性能。某些实例类型不能使用此优化。使用 EBS 优化实例时,可能需要支付额外的使用费用。

默认值:false

必需:否

类型:布尔值

Update requires: Some interruptions

ElasticGpuSpecifications

与实例关联的 Elastic GPU。Elastic GPU 是一种 GPU 资源,可以附加到 Windows 实例来提升应用程序的图形性能。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的 Amazon EC2 Elastic GPU

必需:否

类型ElasticGpuSpecification 的列表

Update requires: Replacement

ElasticInferenceAccelerators

与该实例关联的 Elastic Inference 加速器。Elastic Inference 加速器是一个资源,您可以将其附加到 Amazon EC2 实例以加速深度学习 (DL) 推导工作负载。

不能在同一请求中指定来自不同代系的加速器。

必需:否

类型ElasticInferenceAccelerator 的列表

Update requires: Replacement

HibernationOptions

指示实例是否已启用休眠。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的使您的实例休眠

必需:否

类型HibernationOptions

Update requires: Replacement

HostId

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

必需:否

类型:字符串

Update requires: Some interruptions

HostResourceGroupArn

要在其中启动实例的主机资源组的 ARN。如果指定主机资源组 ARN,请省略 Tenancy 参数或将其设置为 host

必需:否

类型:字符串

Update requires: Replacement

IamInstanceProfile

IAM 实例配置文件。有关属性值,请参阅 Amazon EC2 API 参考 中的 IamInstanceProfileSpecification

必需:否

类型:字符串

Update requires: No interruption

ImageId

AMI 的 ID。启动实例必须使用 AMI ID,并且必须在此处或启动模板中指定此 ID。

必需:条件

类型:字符串

Update requires: Replacement

InstanceInitiatedShutdownBehavior

指示当您从实例中启动关闭操作(使用操作系统命令来关闭系统)时,实例是停止还是终止。

默认值:stop

必需:否

类型:字符串

允许的值stop | terminate

Update requires: No interruption

InstanceType

实例类型。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的实例类型

默认值:m1.small

必需:否

类型:字符串

允许的值a1.2xlarge | a1.4xlarge | a1.large | a1.medium | a1.metal | a1.xlarge | c1.medium | c1.xlarge | c3.2xlarge | c3.4xlarge | c3.8xlarge | c3.large | c3.xlarge | c4.2xlarge | c4.4xlarge | c4.8xlarge | c4.large | c4.xlarge | c5.12xlarge | c5.18xlarge | c5.24xlarge | c5.2xlarge | c5.4xlarge | c5.9xlarge | c5.large | c5.metal | c5.xlarge | c5a.12xlarge | c5a.16xlarge | c5a.24xlarge | c5a.2xlarge | c5a.4xlarge | c5a.8xlarge | c5a.large | c5a.xlarge | c5ad.12xlarge | c5ad.16xlarge | c5ad.24xlarge | c5ad.2xlarge | c5ad.4xlarge | c5ad.8xlarge | c5ad.large | c5ad.xlarge | c5d.12xlarge | c5d.18xlarge | c5d.24xlarge | c5d.2xlarge | c5d.4xlarge | c5d.9xlarge | c5d.large | c5d.metal | c5d.xlarge | c5n.18xlarge | c5n.2xlarge | c5n.4xlarge | c5n.9xlarge | c5n.large | c5n.xlarge | c6g.12xlarge | c6g.16xlarge | c6g.2xlarge | c6g.4xlarge | c6g.8xlarge | c6g.large | c6g.medium | c6g.metal | c6g.xlarge | c6gd.12xlarge | c6gd.16xlarge | c6gd.2xlarge | c6gd.4xlarge | c6gd.8xlarge | c6gd.large | c6gd.medium | c6gd.metal | c6gd.xlarge | cc1.4xlarge | cc2.8xlarge | cg1.4xlarge | cr1.8xlarge | d2.2xlarge | d2.4xlarge | d2.8xlarge | d2.xlarge | f1.16xlarge | f1.2xlarge | f1.4xlarge | g2.2xlarge | g2.8xlarge | g3.16xlarge | g3.4xlarge | g3.8xlarge | g3s.xlarge | g4dn.12xlarge | g4dn.16xlarge | g4dn.2xlarge | g4dn.4xlarge | g4dn.8xlarge | g4dn.metal | g4dn.xlarge | h1.16xlarge | h1.2xlarge | h1.4xlarge | h1.8xlarge | hi1.4xlarge | hs1.8xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge | i2.xlarge | i3.16xlarge | i3.2xlarge | i3.4xlarge | i3.8xlarge | i3.large | i3.metal | i3.xlarge | i3en.12xlarge | i3en.24xlarge | i3en.2xlarge | i3en.3xlarge | i3en.6xlarge | i3en.large | i3en.metal | i3en.xlarge | inf1.24xlarge | inf1.2xlarge | inf1.6xlarge | inf1.xlarge | m1.large | m1.medium | m1.small | m1.xlarge | m2.2xlarge | m2.4xlarge | m2.xlarge | m3.2xlarge | m3.large | m3.medium | m3.xlarge | m4.10xlarge | m4.16xlarge | m4.2xlarge | m4.4xlarge | m4.large | m4.xlarge | m5.12xlarge | m5.16xlarge | m5.24xlarge | m5.2xlarge | m5.4xlarge | m5.8xlarge | m5.large | m5.metal | m5.xlarge | m5a.12xlarge | m5a.16xlarge | m5a.24xlarge | m5a.2xlarge | m5a.4xlarge | m5a.8xlarge | m5a.large | m5a.xlarge | m5ad.12xlarge | m5ad.16xlarge | m5ad.24xlarge | m5ad.2xlarge | m5ad.4xlarge | m5ad.8xlarge | m5ad.large | m5ad.xlarge | m5d.12xlarge | m5d.16xlarge | m5d.24xlarge | m5d.2xlarge | m5d.4xlarge | m5d.8xlarge | m5d.large | m5d.metal | m5d.xlarge | m5dn.12xlarge | m5dn.16xlarge | m5dn.24xlarge | m5dn.2xlarge | m5dn.4xlarge | m5dn.8xlarge | m5dn.large | m5dn.xlarge | m5n.12xlarge | m5n.16xlarge | m5n.24xlarge | m5n.2xlarge | m5n.4xlarge | m5n.8xlarge | m5n.large | m5n.xlarge | m6g.12xlarge | m6g.16xlarge | m6g.2xlarge | m6g.4xlarge | m6g.8xlarge | m6g.large | m6g.medium | m6g.metal | m6g.xlarge | m6gd.12xlarge | m6gd.16xlarge | m6gd.2xlarge | m6gd.4xlarge | m6gd.8xlarge | m6gd.large | m6gd.medium | m6gd.metal | m6gd.xlarge | p2.16xlarge | p2.8xlarge | p2.xlarge | p3.16xlarge | p3.2xlarge | p3.8xlarge | p3dn.24xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge | r3.large | r3.xlarge | r4.16xlarge | r4.2xlarge | r4.4xlarge | r4.8xlarge | r4.large | r4.xlarge | r5.12xlarge | r5.16xlarge | r5.24xlarge | r5.2xlarge | r5.4xlarge | r5.8xlarge | r5.large | r5.metal | r5.xlarge | r5a.12xlarge | r5a.16xlarge | r5a.24xlarge | r5a.2xlarge | r5a.4xlarge | r5a.8xlarge | r5a.large | r5a.xlarge | r5ad.12xlarge | r5ad.16xlarge | r5ad.24xlarge | r5ad.2xlarge | r5ad.4xlarge | r5ad.8xlarge | r5ad.large | r5ad.xlarge | r5d.12xlarge | r5d.16xlarge | r5d.24xlarge | r5d.2xlarge | r5d.4xlarge | r5d.8xlarge | r5d.large | r5d.metal | r5d.xlarge | r5dn.12xlarge | r5dn.16xlarge | r5dn.24xlarge | r5dn.2xlarge | r5dn.4xlarge | r5dn.8xlarge | r5dn.large | r5dn.xlarge | r5n.12xlarge | r5n.16xlarge | r5n.24xlarge | r5n.2xlarge | r5n.4xlarge | r5n.8xlarge | r5n.large | r5n.xlarge | r6g.12xlarge | r6g.16xlarge | r6g.2xlarge | r6g.4xlarge | r6g.8xlarge | r6g.large | r6g.medium | r6g.metal | r6g.xlarge | r6gd.12xlarge | r6gd.16xlarge | r6gd.2xlarge | r6gd.4xlarge | r6gd.8xlarge | r6gd.large | r6gd.medium | r6gd.metal | r6gd.xlarge | t1.micro | t2.2xlarge | t2.large | t2.medium | t2.micro | t2.nano | t2.small | t2.xlarge | t3.2xlarge | t3.large | t3.medium | t3.micro | t3.nano | t3.small | t3.xlarge | t3a.2xlarge | t3a.large | t3a.medium | t3a.micro | t3a.nano | t3a.small | t3a.xlarge | u-12tb1.metal | u-18tb1.metal | u-24tb1.metal | u-6tb1.metal | u-9tb1.metal | x1.16xlarge | x1.32xlarge | x1e.16xlarge | x1e.2xlarge | x1e.32xlarge | x1e.4xlarge | x1e.8xlarge | x1e.xlarge | z1d.12xlarge | z1d.2xlarge | z1d.3xlarge | z1d.6xlarge | z1d.large | z1d.metal | z1d.xlarge

Update requires: Some interruptions

Ipv6AddressCount

[EC2-VPC] 要与主网络接口关联的 IPv6 地址的数量。Amazon EC2 选择子网范围内的 IPv6 地址。您不能指定此选项以及用于在同一请求中分配特定 IPv6 地址的选项。如果已指定要启动的实例的最小数目,则可以指定此选项。

您不能在相同请求中指定此选项和网络接口选项。

必需:否

类型:整数

Update requires: Replacement

Ipv6Addresses

[EC2-VPC] 要与主网络接口关联的子网范围内的 IPv6 地址。您不能指定此选项以及用于在同一请求中分配大量 IPv6 地址的选项。如果已指定要启动的实例的最小数目,则不能指定此选项。

您不能在相同请求中指定此选项和网络接口选项。

必需:否

类型InstanceIpv6Address 的列表

Update requires: Replacement

KernelId

内核的 ID。

重要

我们建议您使用 PV-GRUB 而不是内核和 RAM 磁盘。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的 PV-GRUB

必需:否

类型:字符串

Update requires: Some interruptions

KeyName

密钥对的名称。您可以使用 CreateKeyPairImportKeyPair 创建密钥对。

重要

如果您未指定密钥对,则无法连接到实例,除非您选择配置为允许用户以其他方式登录的 AMI。

必需:否

类型:字符串

Update requires: Replacement

LaunchTemplate

用于启动实例的启动模板。在 AWS CloudFormation 模板中指定的任何参数都会覆盖启动模板中的相同参数。您可以指定启动模板的名称或 ID,但不能同时指定二者。

必需:否

类型LaunchTemplateSpecification

Update requires: Replacement

LicenseSpecifications

许可证配置。

必需:否

类型LicenseSpecification 的列表

Update requires: Replacement

Monitoring

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

必需:否

类型:布尔值

Update requires: No interruption

NetworkInterfaces

要与实例关联的网络接口。

注意

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

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

必需:否

类型NetworkInterface 的列表

Update requires: Replacement

PlacementGroupName

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

必需:否

类型:字符串

Update requires: Replacement

PrivateIpAddress

[EC2-VPC] 主要 IPv4 地址。您必须从子网的 IPv4 地址范围内指定值。

只能将一个私有 IP 地址指定为主要地址。如果您已在网络接口规范中指定此选项以将私有 IP 地址作为主 IP 地址,则不能指定此选项。如果要在请求中启动多个实例,则无法指定此选项。

您不能在相同请求中指定此选项和网络接口选项。

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

必需:否

类型:字符串

Update requires: Replacement

RamdiskId

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

重要

我们建议您使用 PV-GRUB 而不是内核和 RAM 磁盘。有关更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的 PV-GRUB

必需:否

类型:字符串

Update requires: Some interruptions

SecurityGroupIds

安全组的 ID。您可以使用 CreateSecurityGroup 创建安全组。

如果指定一个网络接口,您必须指定任何安全组作为该网络接口的一部分。

必需:条件

类型:字符串列表

Update requires: Some interruptions

SecurityGroups

[EC2-Classic、默认 VPC] 安全组的名称。对于非默认 VPC,您必须使用安全组 ID。

您不能在相同请求中指定此选项和网络接口选项。该列表可能包含现有 Amazon EC2 的名称、对模板中创建的 AWS::EC2::SecurityGroup 资源的引用,或同时包含两者。

默认值:Amazon EC2 使用默认安全组。

必需:否

类型:字符串列表

Update requires: Replacement

SourceDestCheck

指定是否启用在 VPC 中启动的实例来执行 NAT。这将控制是否在实例上启用源/目标检查。值为 true 表示已启用检查,false 表示已禁用检查。对于要执行 NAT 的实例,该值必须为 false。有关更多信息,请参阅 Amazon Virtual Private Cloud 用户指南 中的 NAT 实例

必需:否

类型:布尔值

Update requires: No interruption

SsmAssociations

在 AWS Systems Manager 中要与此实例关联的 SSM 文档和参数值。要使用此属性,您必须为此实例指定 IAM 实例配置文件角色。有关更多信息,请参阅 AWS Systems Manager 用户指南 中的为 Systems Manager 创建实例配置文件

注意

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

必需:否

类型SsmAssociation 的列表

Update requires: No interruption

SubnetId

[EC2-VPC] 要在其中启动实例的子网的 ID。

如果指定一个网络接口,您必须将任何子网指定为该网络接口的一部分。

必需:否

类型:字符串

Update requires: Replacement

Tags

要添加到实例的标签。这些标签不会应用到 EBS 卷,例如根卷。AWS CloudFormation 在启动实例后添加这些标签。

必需:否

类型Tag 的列表

Update requires: No interruption

Tenancy

实例的租期(如果该实例在 VPC 中运行)。具有 dedicated 租期的实例在单租户硬件上运行。

必需:否

类型:字符串

允许的值dedicated | default | host

Update requires: Some interruptions

UserData

提供给实例的用户数据。有关更多信息,请参阅启动时在 Linux 实例上运行命令 (Linux) 和添加用户数据 (Windows)。如果使用的是命令行工具,系统将执行 base64 编码,您可以从文件中加载文本。否则,您必须提供 base64 编码文本。用户数据被限制在 16 KB 以内。

必需:否

类型:字符串

Update requires: Some interruptions

Volumes

要附加到实例的卷。

必需:否

类型Volume 的列表

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 返回实例 ID。例如:i-1234567890abcdef0

For more information about using the Ref function, see Ref.

Fn::GetAtt

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

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

AvailabilityZone

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

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

PrivateDnsName

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

PrivateIp

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

PublicDnsName

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

PublicIp

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

示例

具有 EBS Block Device Mapping 的 EC2 实例

JSON

"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

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"

另请参阅