Amazon web services AWS CLI:描述网络ACL

Amazon web services AWS CLI:描述网络ACL,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我对这个命令有点问题。我试图只列出出口ACL规则,只列出规则编号。这是我的命令: aws ec2 describe-network-acls --network-acl-ids acl-c324a5a4 --output text --query 'NetworkAcls[*].Entries[*].{RN:RuleNumber}' --filter Name=entry.rule-action,Values=allow Name=entry.egress,Values=true 这本书的回报

我对这个命令有点问题。我试图只列出
出口
ACL
规则,只列出规则编号。这是我的命令:

aws ec2 describe-network-acls --network-acl-ids acl-c324a5a4 --output text --query 'NetworkAcls[*].Entries[*].{RN:RuleNumber}' --filter Name=entry.rule-action,Values=allow Name=entry.egress,Values=true
这本书的回报是:

100
110
120
130
140
150
160
170
32767
100
110
120
130
140
150
160
170
32767
它基本上列出了进出规则。进出规则具有相同的规则编号。它还列出了*
拒绝规则(32767)
,我也希望避免这种情况

在我只想列出出口规则编号的地方,有人能帮我使用这个命令吗

谢谢

所以您需要允许的出口规则编号。可以使用以下查询执行此操作:

aws ec2 describe-network-acls \
  --output text \
  --network-acl-ids acl-c324a5a4 \
  --query 'NetworkAcls[*].Entries[?(RuleAction==`allow` && Egress==`true`)].{RN:RuleNumber}'
您可以阅读有关

的更多信息,因此需要允许的出口规则编号。可以使用以下查询执行此操作:

aws ec2 describe-network-acls \
  --output text \
  --network-acl-ids acl-c324a5a4 \
  --query 'NetworkAcls[*].Entries[?(RuleAction==`allow` && Egress==`true`)].{RN:RuleNumber}'

您可以阅读更多关于

的信息。在awk和grep的帮助下,我们可以获得如下所示的唯一出口规则列表

aws ec2 describe-network-acls --network-acl-ids acl-63092b1a  --query 'NetworkAcls[*].Entries[*].[Egress,RuleNumber]' --output text | grep -v False | awk {'print $2'} | grep -v '^$\|^\s*\#'
要按特定字段的值筛选结果,请使用JMESPath“?”运算符。以下示例查询仅输出us-west-2a可用性区域中的卷:

$ aws ec2 describe-volumes --query 'Volumes[?AvailabilityZone==`us-west-2a`]'

在awk和grep的帮助下,我们可以得到如下所示的唯一出口规则列表

aws ec2 describe-network-acls --network-acl-ids acl-63092b1a  --query 'NetworkAcls[*].Entries[*].[Egress,RuleNumber]' --output text | grep -v False | awk {'print $2'} | grep -v '^$\|^\s*\#'
要按特定字段的值筛选结果,请使用JMESPath“?”运算符。以下示例查询仅输出us-west-2a可用性区域中的卷:

$ aws ec2 describe-volumes --query 'Volumes[?AvailabilityZone==`us-west-2a`]'

没错,你就是这样做的。非常感谢!最后一件事可以麻烦你吗?如何将端口范围添加到此查询?假设我有往返20号端口的规则。。。如何查询该特定端口(包括之前的允许和退出)。谢谢实际上,没必要。我应该在请求你更多帮助之前试一下。只需要这样做:PortRange.to=
20
对,这就是你要做的。非常感谢!最后一件事可以麻烦你吗?如何将端口范围添加到此查询?假设我有往返20号端口的规则。。。如何查询该特定端口(包括之前的允许和退出)。谢谢实际上,没必要。我应该在请求你更多帮助之前试一下。只需要这样做:PortRange.to==
20
好主意,使用awk。谢谢但您可能会同意我的观点,即利用查询字符串的正确使用看起来更专业-您认为如何?我同意您@FelipeCaldasNice的想法,使用awk。谢谢但您可能会同意我的观点,即利用查询字符串的正确使用,它看起来更专业-您认为如何?我同意您@FelipeCaldas的观点