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

How do I use AWS CLI to list all instances with name, state, instance size and AZ in the same line

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

我接近这个:

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

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

您需要将Tags[?Key==姓名].Value[]更改为Tags[?Key==姓名].Value[] | [0];我认为这是因为 Tags[?Key==Name].Value[] returns 文本输出格式不知道如何放在一行的数组,管道到 [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

假设原始命令 returns 每台机器有 2 行这样的内容:

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

上述脚本的输出将是:

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

这个 hack 很容易理解,并且很容易适应--任何复杂的输出文本。