我正在使用AWS CLI获取EC2实例详细信息。我的要求是:
1)仅获取正在运行的EC2实例:
但是我无法获取最后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文件中。
答案 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)可能会为单个实例返回多个值。