AWS EC2 CLI 为描述安全组提供不一致的结果
AWS EC2 CLI gives inconsistent results for describe-security-groups
我有两个不同的安全组要查询,我们称它们为 sg-xxx
和 sg-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
的规则?
你要求 CLI 描述安全组(包括 name、sg-id、vpc-id、account-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
我有两个不同的安全组要查询,我们称它们为 sg-xxx
和 sg-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
的规则?
你要求 CLI 描述安全组(包括 name、sg-id、vpc-id、account-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