AWS CLI 命令行:如何使用“--query”输出多个源行

AWS CLI 命令行:如何使用“--query”输出多个源行

我正在使用 aws-cli 版本 1.7.8 获取输出--query以创建一条来自多行的记录。在本例中,我尝试从中获取特定信息describe-instances

describe-instances命令中,我们得到引用 、 和 的行RESERVATIONS/INSTANCES部分TAGS

我可以简单地运行新的 AWS CLI 命令来分别获取所有三行的信息:

预订热线:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[*].ReservationId'

实例行:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[*].[Instances[*].[InstanceId,ImageId]]'

标语:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[].Instances[].[Tags[?Key==姓名]]'

我可以运行这 3 个命令,并将结果连接起来形成 1 条记录。

有人知道是否有办法可以将其作为一个 (1) 命令来运行,而不是 3 个不同的命令?

我已经尝试了 PIPE 和其他形式的语法,但目前还没有找到好的解决方案。

我可以通过一个命令获得这 3 个命令的等效输出吗?

答案1

aws ec2 describe-instances --instance-id i-77777777 \
  --query 'Reservations[*].Instances[*].[InstanceId,ImageId,Tags[*]]' \
  --output text

此命令将打印实例 ID、AMI ID、键和值标签。您可以在此处查看更多示例: 从 AWS 命令​​行界面控制命令输出

答案2

对于 Windows(cmd.exe、cmder.exe 等),必须在查询字符串周围使用双引号(“),而不是单引号(')。否则控制台只会打印查询中的路径,甚至不会生成错误。

答案3

有关信息,列出所有实例名称及其实例 ID:

aws ec2 describe-instances \
  --filters 'Name=instance-state-name,Values=running' \
  --query 'Reservations[].Instances[].{Name:Tags[?Key==`Name`].Value | [0],InstanceId:InstanceId}' --output table

相关内容