1

我有两个不同的安全组要查询,让我们调用它们sg-xxxsg-yyy. 我正在运行以下命令以获取有关每个组中哪些 IP 的详细信息:

aws ec2 describe-security-groups \
  --filters Name=ip-permission.to-port,Values=22 Name=ip-permission.from-port,Values=22 Name=ip-permission.protocol,Values=tcp \
  --group-ids sg-xxx --output text

当我使用 运行命令行时sg-xxx,我得到类似于以下内容的输出:

SECURITYGROUPS  group-name created YYYY-MM-DDTHH:MM:SS.ZZZ+00:00    sg-xxx  group-name  xxxxxxxxxxxx    vpc-xxx
IPPERMISSIONS   22  tcp 22
IPRANGES    1.1.1.1/32
IPRANGES    2.2.2.2/32
IPPERMISSIONSEGRESS -1
IPRANGES    0.0.0.0/0

但是,当我使用 运行相同的命令行时sg-yyy,它包含不使用端口的条目22

SECURITYGROUPS  group-name  sg-yyy  group-tag   xxxxxxxxxxxx    vpc-yyy
IPPERMISSIONS   80  tcp 80
IPRANGES    0.0.0.0/0
IPPERMISSIONS   22  tcp 22
IPRANGES    1.1.1.1/32
IPRANGES    2.2.2.2/32
IPPERMISSIONS   10000   tcp 10000
IPRANGES    3.3.3.3/32
IPPERMISSIONS   25  tcp 25
IPRANGES    0.0.0.0/0
IPPERMISSIONSEGRESS -1
IPRANGES    0.0.0.0/0

任何人都遇到过与此命令行类似的问题,并且有人知道如何解决这个问题吗?

如果这是预期的行为,有没有办法获得匹配的规则tcp port 22

4

1 回答 1

3

您要求 CLI 描述安全组(其中包括名称、sg-id、vpc-id、帐户 ID 等)该命令描述了与您的过滤器匹配的安全组。这并不意味着它只会列出与过滤器匹配的 SG 规则。CLI 描述的是组,而不是规则

sg-xxx似乎只有一个规则。如果它有其他规则,您将看到它们被列出。

要仅获取匹配规则,请添加

--query 'SecurityGroups[*].IpPermissions[?ToPort==`22`]'

到您的查询结束。

aws ec2 describe-security-groups --filters Name=ip-permission.to-port,Values=22\
   Name=ip-permission.from-port,Values=22 Name=ip-permission.protocol,Values=tcp\
   --group-ids sg-xxx --query 'SecurityGroups[*].IpPermissions[?ToPort==`22`]'\
   --output text

输出

22  tcp 22
IPRANGES    1.1.1.1/32
IPRANGES    2.2.2.2/32
于 2017-03-10T19:59:16.950 回答