本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中启动、列出和关闭 Amazon EC2 实例 AWS CLI
您可以使用 AWS Command Line Interface (AWS CLI) 启动、列出和终止亚马逊弹性计算云 (AmazonEC2) 实例。如果您启动的实例不在 AWS 免费套餐范围内,则即使实例处于闲置状态,也会在启动该实例后向您收费,并按该实例的运行时间收费。
注意
有关其他命令示例,请参阅参考指南
先决条件
要运行本主题中的 ec2
命令,您需要先完成以下操作:
安装和配置 AWS CLI。有关更多信息,请参阅安装或更新到最新版本的 AWS CLI 和的身份验证和访问凭证 AWS CLI。
-
将您的IAM权限设置为允许 Amazon EC2 访问。有关亚马逊IAM权限的更多信息EC2,请参阅《亚马逊EC2用户指南》EC2中的亚马逊IAM政策。
-
选择 Amazon 系统映像 (AMI) 并记下 AMI ID。有关更多信息,请参阅《Amazon EC2 用户指南》AMI中的 “寻找合适的人”。
启动实例
要使用AMI您选择的启动 Amazon EC2 实例,请使用aws ec2
run-instances
命令。您可以将实例启动到虚拟私有云中 (VPC)。
最初,您的实例显示为 pending
状态,但在几分钟后将更改为 running
状态。
以下示例说明如何在的指定子网中启动t2.micro
实例VPC。更换 italicized
使用您自己的参数值。
$
aws ec2 run-instances --image-id
ami-xxxxxxxx
--count 1 --instance-type t2.micro --key-nameMyKeyPair
--security-group-idssg-903004f8
--subnet-idsubnet-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 } ] }
向实例添加块储存设备
每个启动的实例都具有关联的根设备卷。您可以使用块储存设备映射来指定其他 Amazon Elastic Block Store (AmazonEBS) 卷或实例存储卷,以便在实例启动时连接到该实例。
要向实例添加块储存设备,请在使用 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 用户指南中的区块设备映射。
向您的实例添加标签
标签是您分配给 AWS 资源的标签。它允许您向您可用于各种目的的资源添加元数据。有关更多信息,请参阅 Amazon EC2 用户指南中的为资源添加标签。
以下示例显示如何使用 aws ec2
create-tags
命令,将带有密钥名称“Name
”和值“MyInstance
”的标签添加到指定的实例。
$
aws ec2 create-tags --resources
i-5203422c
--tags Key=Name
,Value=MyInstance
连接到您的实例
当您的实例运行时,您可以连接到该实例,然后像使用您面前的电脑一样使用该实例。有关更多信息,请参阅《亚马逊EC2用户指南》中的 “连接到您的亚马逊EC2实例”。
列出您的实例
您可以使用列 AWS CLI 出您的实例并查看有关它们的信息。您可以列出所有实例,或根据您感兴趣的实例对结果进行筛选。
以下示例演示了如何使用 aws ec2
describe-instances
命令。
以下命令列出您的所有实例。
$
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
"
以下命令列出了使用以下任一方式启动的实例AMIs:ami-x0123456
ami-y0123456
、和ami-z0123456
。
$
aws ec2 describe-instances --filters "Name=image-id,Values=
ami-x0123456
,ami-y0123456
,ami-z0123456
"
终止实例
终止实例将删除此实例。在您终止之后,您将无法重新连接到此实例。
一旦实例的状态变为 shutting-down
或 terminated
,您即停止为该实例付费。如果您希望稍后重新连接到实例,请使用 stop-instances,而不是 terminate-instances
。有关更多信息,请参阅 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" } } ] }
参考信息
AWS CLI 参考:
其他参考资料:
-
要查看和贡献 AWS CLI 代码示例,请参阅上的 “AWS 代码示例存储库
” GitHub。 AWS SDK