如何使用AWS CLI在同一行中列出名称,状态,实例大小和AZ的所有实例?
我接近这个:
aws ec2 describe-instances --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[], Placement.AvailabilityZone,InstanceType,State.Name]' --output text
但是,实例名称会输出其余部分。我想让它们保持在同一行,以便我可以复制到电子表格。
答案 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
这种黑客很容易被理解,并且可以很容易地适应 - 输出任何复杂的文本。