AWS Command Line Interface
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

启动、列出和终止 Amazon EC2 实例

您可以使用 AWS Command Line Interface (AWS CLI) 启动、列出和终止 Amazon Elastic Compute Cloud (Amazon EC2) 实例。您需要密钥对安全组。您还需要选择 Amazon 系统映像 (AMI) 并记下 AMI ID。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的查找合适的 AMI

如果您启动不在 AWS 免费套餐范围内的实例,那么在启动实例后您将需要付费,费用按实例的运行时间计算,即使实例处于闲置状态也需付费。

注意

以下示例假定您已配置了默认凭证

启动实例

要使用所选的 AMI 启动 Amazon EC2 实例,请使用 run-instances 命令。您可以将实例启动到 virtual private cloud (VPC),或者如果您的账户支持,会启动到 EC2-Classic。

最初,您的实例显示为 pending 状态,但在几分钟后将更改为 running 状态。

EC2-VPC

以下示例在 VPC 的指定子网中启动 t2.micro 实例。将斜体参数值替换为您自己的值。

$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e { "OwnerId": "123456789012", "ReservationId": "r-5875ca20", "Groups": [ { "GroupName": "my-sg", "GroupId": "sg-903004f8" } ], "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": null, "Platform": "windows", "State": { "Code": 0, "Name": "pending" }, "EbsOptimized": false, "LaunchTime": "2013-07-19T02:42:39.000Z", "PrivateIpAddress": "10.0.1.114", "ProductCodes": [], "VpcId": "vpc-1a2b3c4d", "InstanceId": "i-5203422c", "ImageId": "ami-173d747e", "PrivateDnsName": ip-10-0-1-114.ec2.internal, "KeyName": "MyKeyPair", "SecurityGroups": [ { "GroupName": "my-sg", "GroupId": "sg-903004f8" } ], "ClientToken": null, "SubnetId": "subnet-6e7f829e", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Status": "in-use", "SourceDestCheck": true, "VpcId": "vpc-1a2b3c4d", "Description": "Primary network interface", "NetworkInterfaceId": "eni-a7edb1c9", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-10-0-1-114.ec2.internal", "Primary": true, "PrivateIpAddress": "10.0.1.114" } ], "PrivateDnsName": "ip-10-0-1-114.ec2.internal", "Attachment": { "Status": "attached", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-52193138", "AttachTime": "2013-07-19T02:42:39.000Z" }, "Groups": [ { "GroupName": "my-sg", "GroupId": "sg-903004f8" } ], "SubnetId": "subnet-6e7f829e", "OwnerId": "123456789012", "PrivateIpAddress": "10.0.1.114" } ], "SourceDestCheck": true, "Placement": { "Tenancy": "default", "GroupName": null, "AvailabilityZone": "us-west-2b" }, "Hypervisor": "xen", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "Status": "attached", "DeleteOnTermination": true, "VolumeId": "vol-877166c8", "AttachTime": "2013-07-19T02:42:39.000Z" } } ], "Architecture": "x86_64", "StateReason": { "Message": "pending", "Code": "pending" }, "RootDeviceName": "/dev/sda1", "VirtualizationType": "hvm", "RootDeviceType": "ebs", "Tags": [ { "Value": "MyInstance", "Key": "Name" } ], "AmiLaunchIndex": 0 } ] }

EC2-Classic

如果您的账户支持,您可以使用以下命令在 EC2-Classic 中启动 t1.micro 实例。将斜体参数值替换为您自己的值。

$ aws ec2 run-instances --image-id ami-173d747e --count 1 --instance-type t1.micro --key-name MyKeyPair --security-groups my-sg { "OwnerId": "123456789012", "ReservationId": "r-5875ca20", "Groups": [ { "GroupName": "my-sg", "GroupId": "sg-903004f8" } ], "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": null, "Platform": "windows", "State": { "Code": 0, "Name": "pending" }, "EbsOptimized": false, "LaunchTime": "2013-07-19T02:42:39.000Z", "ProductCodes": [], "InstanceId": "i-5203422c", "ImageId": "ami-173d747e", "PrivateDnsName": null, "KeyName": "MyKeyPair", "SecurityGroups": [ { "GroupName": "my-sg", "GroupId": "sg-903004f8" } ], "ClientToken": null, "InstanceType": "t1.micro", "NetworkInterfaces": [], "Placement": { "Tenancy": "default", "GroupName": null, "AvailabilityZone": "us-west-2b" }, "Hypervisor": "xen", "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "Status": "attached", "DeleteOnTermination": true, "VolumeId": "vol-877166c8", "AttachTime": "2013-07-19T02:42:39.000Z" } } ], "Architecture": "x86_64", "StateReason": { "Message": "pending", "Code": "pending" }, "RootDeviceName": "/dev/sda1", "VirtualizationType": "hvm", "RootDeviceType": "ebs", "Tags": [ { "Value": "MyInstance", "Key": "Name" } ], "AmiLaunchIndex": 0 } ] }

向实例添加块储存设备

每个启动的实例都具有关联的根设备卷。您可以使用块储存设备映射来指定实例启动时要连接的其他 Amazon Elastic Block Store (Amazon EBS) 卷或实例存储卷。

要向实例添加块储存设备,请在使用 run-instances 时指定 --block-device-mappings 选项。

以下示例参数配置大小为 20 GB 的标准 Amazon EBS 卷,并使用标识符 /dev/sdf 将其映射到您的实例。

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false}}]"

以下示例基于现有快照添加映射到 /dev/sdf 的 Amazon EBS 卷。快照表示加载到卷的映像。当您指定快照时,无需指定卷大小;它将足够大可容纳您的映像。但是,如果您确定指定大小,则大小必须大于或等于快照的大小。

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-a1b2c3d4\"}}]"

以下示例向实例添加两个卷。可用于您的实例的卷的数目取决于其实例类型。

--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"VirtualName\":\"ephemeral0\"},{\"DeviceName\":\"/dev/sdg\",\"VirtualName\":\"ephemeral1\"}]"

以下示例创建映射 (/dev/sdj),但未为实例预配置卷。

--block-device-mappings "[{\"DeviceName\":\"/dev/sdj\",\"NoDevice\":\"\"}]"

有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的块储存设备映射

向实例添加标签

标签是您为 AWS 资源分配的标记。它允许您向您可用于各种目的的资源添加元数据。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的标记您的资源

以下示例显示如何使用 create-tags 命令,将带有密钥名称“Name”和值“MyInstance”的标签添加到指定的实例。

$ aws ec2 create-tags --resources i-5203422c --tags Key=Name,Value=MyInstance

连接到您的实例

当您的实例运行时,您可以连接到该实例,然后像使用您面前的计算机一样使用该实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的连接到您的 Amazon EC2 实例

列出实例

您可以使用 AWS CLI 列出您的实例并查看有关这些实例的信息。您可以列出所有实例,或根据您感兴趣的实例对结果进行筛选。

以下示例说明如何使用 describe-instances 命令。

以下命令将列表筛选到只仅限您的 t2.micro 实例,并仅为每个匹配项输出 InstanceId 值。

$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId" [ "i-05e998023d9c69f9a" ]

以下命令列出具有标签 Name=MyInstance 的任何实例。

$ aws ec2 describe-instances --filters "Name=tag:Name,Values=MyInstance"

以下命令列出使用以下任何 AMI 启动的实例:ami-x0123456ami-y0123456ami-z0123456

$ aws ec2 describe-instances --filters "Name=image-id,Values=ami-x0123456,ami-y0123456,ami-z0123456"

终止实例

终止实例将删除此实例。在您终止之后,您将无法重新连接到此实例。

一旦实例的状态变为 shutting-downterminated,您即停止为该实例付费。如果您希望稍后重新连接到实例,请使用 stop-instances,而不是 terminate-instances。想要了解更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的终止您的实例

当您使用完该实例后,您可以使用命令 terminate-instances 将其删除。

$ aws ec2 terminate-instances --instance-ids i-5203422c { "TerminatingInstances": [ { "InstanceId": "i-5203422c", "CurrentState": { "Code": 32, "Name": "shutting-down" }, "PreviousState": { "Code": 16, "Name": "running" } } ] }