AWS CLI获取EC2实例详细信息

时间:2017-03-08 06:35:25

标签: amazon-web-services amazon-ec2 aws-cli

我正在使用AWS CLI获取EC2实例详细信息。我的要求是:

1)仅获取正在运行的EC2实例:

  • instance id
  • instance tag
  • 实例类型
  • 可用区
  • blockdevices name
  • 平台
  • reserved或ondemand

但是我无法获取最后3个属性(blockdevices name,platform和reserved或ondemand)。当我在查询中添加它时,它显示无。我需要在查询中更改什么?

我的查询是:

aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value,InstanceId,State.Name,InstanceType,Placement.AvailabilityZone]" --output table > output.txt

输出结果为:

|  test1 |  i-xxxxxxx  |  m1.small   |  running |  us-east-1a  |
|  test2 |  i-xxxxx    |  m1.large   |  running |  us-east-1c  |
|  test3 |  i-xxxxx    |  m1.xlarge  |  running |  us-east-1c  |
|  test4 |  i-xxxxxxx  |  m3.2xlarge |  running |  us-east-1a  |

2)需要获取每个实例价格考虑这些属性(区域,类型,按需/保留)并将完整的实例详细信息放入CSV文件中。

1 个答案:

答案 0 :(得分:0)

阻止设备名称

我不确定“name”的含义,但有一个DeviceName字段:

aws ec2 describe-instances --query Reservations[*].Instances[*].BlockDeviceMappings[*].DeviceName

<强>平台

Platform字段为Windows或未定义(对于Linux):

aws ec2 describe-instances --query Reservations[*].Instances[*].Platform

保留或按需

这是结算概念,不适用于某个实例。实际上,一个实例可以在一小时内按需按需收费,在另一小时内作为预留实例收费。

基本概念是,对于帐户拥有的每个预留实例,计费系统会查找与预留实例参数匹配的正在运行的Amazon EC2实例。匹配实例不收取该小时的每小时费用。此信息可在结算文件中查看,但不能作为实例的信息。

确保您已开启Detailed Billing Reports,以便您可以获得此级别的结算信息。只有报告被激活后才会出现(不是时光倒流)。

获取价格

没有命令来获取正在运行的Amazon EC2实例的价格。有Price List API提供与AWS网站上的定价页面类似的定价信息。

您可以编写程序以通过价格表API获取价格,并确定哪个价格适合某个实例。但是,如上所述,程序不知道实例是否作为预留实例运行。

将完整的实例详细信息放入CSV文件

AWS CLI不输出CSV格式。您必须将输出后处理为所需的格式。请注意,您的某些信息(例如BlockDevices)可能会为单个实例返回多个值。