如何使用AWS CLI在同一行中列出名称,状态,实例大小和AZ的所有实例

时间:2015-10-26 21:57:12

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

如何使用AWS CLI在同一行中列出名称,状态,实例大小和AZ的所有实例?

我接近这个:

aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[], Placement.AvailabilityZone,InstanceType,State.Name]' --output text

但是,实例名称会输出其余部分。我想让它们保持在同一行,以便我可以复制到电子表格。

2 个答案:

答案 0 :(得分:4)

您需要将Tags[?Key==姓名].Value[]更改为Tags[?Key==姓名].Value[] | [0];我认为这是因为Tags[?Key==名称].Value[]返回一个数组,文本输出格式不知道如何放在一行,管道到[0]提取(单)元素出你的。所以你的完整查询应该是:

aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[] | [0], Placement.AvailabilityZone,InstanceType,State.Name]' --output text

答案 1 :(得分:1)

如果您不希望用管道语法刮开眼睛,请考虑这个简单的shell解决方法:

aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[], Placement.AvailabilityZone,InstanceType,State.Name]' | \
while read Zone Type State ; do 
   read Name
   echo "$Name $Zone $Type $State"
done

假设原始命令为每台机器返回2行,如下所示:

my-ec2-host-xyz
us-east-1d      t2.micro        running

上述脚本的输出将是:

my-ec2-host-xyz us-east-1d t2.micro running

这种黑客很容易被理解,并且可以很容易地适应 - 输出任何复杂的文本。