我正在使用 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