未应用 AWS CLI 过滤器

未应用 AWS CLI 过滤器

我想要从 AWS 接收一些值SecurityGroup并使用以下命令:

aws ec2 describe-security-groups --group-ids $GROUP \
  --filters 'Name=ip-permission.from-port,Values=22 Name=ip-permission.to-port,Values=22' \
  --query 'SecurityGroups[*].IpPermissions[*].{cidr:Ipv6Ranges[*].CidrIpv6,from:FromPort,to:ToPort}' \
  --output json

但是输出提供了所有现有的端口范围,而仅预期端口 22:

[
    [
        {
            "cidr": [
                "::/0"
            ],
            "from": 80,
            "to": 80
        },
        {
            "cidr": [
                "2001::snip/128"
            ],
            "from": 22,
            "to": 22
        },
        {
            "cidr": [
                "::/0"
            ],
            "from": 443,
            "to": 443
        }
    ]
]

似乎我的过滤器没有应用。任何提示都非常感谢!

答案1

过滤器工作正常。您已请求包含(但不限于)ToPort == 22 和 FromPort == 22 的所有安全组。您的查询需要限制输出内容。您可以通过添加以下内容来实现:

?ToPort == `22` 

到查询的 IpPermissions[] 部分以进一步限制输出。

下面应该会给出你想要的输出:

aws ec2 describe-security-groups --filters 'Name=ip-permission.from-port,Values=22 Name=ip-permission.to-port,Values=22'   --query 'SecurityGroups[*].IpPermissions[?ToPort == `22`].{cidr:Ipv6Ranges[*].CidrIpv6,from:FromPort,to:ToPort}' --output json

参考

CLI 使用输出

相关内容