AWS EC2基于2个过滤器获取IP和名称

时间:2017-05-23 13:06:58

标签: amazon-web-services amazon-ec2 aws-cli

JMESPath让我发疯。我想获得security group == "SG-DEV"

的机器的IP和名称

阅读文件1小时后我想出了什么:

aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'].Value[] && SecurityGroups[?GroupName == 'SG-DEV'].PrivateIpAddress]"

它只生成机器名称,而不仅仅是SG-DEV机器而不是IP地址。 我做错了什么?

2 个答案:

答案 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-addressprivate-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