启动、列出和终止 Amazon EC2 实例 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon CLI 版本 1 将弃用 Python 2.7、3.4 和 3.5。有关更多信息,请参阅关于 Amazon CLI 版本的 Amazon CLI 版本 1 部分。

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

您可以使用 Amazon Command Line Interface (Amazon CLI) 启动、列出和终止 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如果您启动不在 Amazon 免费套餐范围内的实例,那么在启动实例后您将需要付费,费用按实例的运行时间计算,即使实例处于闲置状态也需付费。

Prerequisites

要运行本主题中的 ec2 命令,您需要先完成以下操作:

启动实例

要使用所选的 AMI 启动单个 Amazon EC2 实例,请使用 aws 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) 卷或实例存储卷。

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

以下示例参数配置大小为 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\":\"\"}]"

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

向您的实例添加标签

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

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

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

连接到您的实例

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

列出您的实例

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

以下示例演示了如何使用 aws ec2 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。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的终止实例

要删除实例,请使用命令 aws ec2 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" } } ] }

References

Amazon CLI 引用:

其他参考资料: