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

Amazon web services 如何使用AWS CLI在同一行中列出名称、状态、实例大小和AZ的所有实例,amazon-web-services,amazon-ec2,aws-cli,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 但这会在其余的下面输出实例名称。我想让它们保持在同一行,这样我就可以复制到电子表格中。您

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

我很接近这一点:

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

但这会在其余的下面输出实例名称。我想让它们保持在同一行,这样我就可以复制到电子表格中。

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

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

如果您不想用管道语法来划掉眼睛,请考虑这个简单的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
假设原始命令为每台机器返回如下两行:

my-ec2-host-xyz
us-east-1d      t2.micro        running
上述脚本的输出将是:

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

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