我想要从 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
参考