JMESPath
让我发疯。我想获得security group == "SG-DEV"
阅读文件1小时后我想出了什么:
aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'].Value[] && SecurityGroups[?GroupName == 'SG-DEV'].PrivateIpAddress]"
它只生成机器名称,而不仅仅是SG-DEV机器而不是IP地址。 我做错了什么?
答案 0 :(得分:1)
你做错了。使用filters
列出具有SG-DEV
作为安全组的实例,然后从输出中仅提取专用IP和实例名称。获取实例名称有点棘手。查看以下内容中的示例:Controlling Command Output from the AWS Command Line Interface
以下内容应该返回您要求的内容:
aws ec2 describe-instances --filter "Name=instance.group-name,Values=SG-DEV" --query "Reservations[].Instances[].[PrivateIpAddress, Tags[?Key=='Name'].Value]" --output text
答案 1 :(得分:0)
私有IP地址位于不同的命名空间下,您需要使用查询和过滤器开关的组合来实现。
network-interface.addresses.private-ip-address
和private-ip-address
更改Values=SG-DEV
aws ec2 describe-instances --filter "Name=instance.group-name,Values=default" --query "Reservations[].Instances[*].PrivateIpAddress[]"
返回此列表
[
"10.0.1.202"
]
过滤器也可以过滤标签
tag:key = value - 分配给资源的标记的键/值组合。在过滤器名称中指定标记的键,并在过滤器值中指定标记的值。例如,对于标签Purpose = X,请指定 tag:过滤器名称的用途和过滤器值的X.
tag-key - 分配给资源的标记的键。此过滤器独立于标签值过滤器。例如,如果同时使用过滤器“tag-key = Purpose”和过滤器“tag-value = X”,则可以为任何资源分配标记键目的(无论标记的值是什么)和标记值X(不管标签的键是什么)。如果您只想列出目的为X的资源,请参阅标记:key = value 过滤器。
tag-value - 分配给资源的标记的值。此过滤器独立于标记键过滤器。
http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html