Amazon web services AWS CLI表达式:错误的jmespath表达式:未知标记
我运行下面的查询,它运行正常Amazon web services AWS CLI表达式:错误的jmespath表达式:未知标记,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我运行下面的查询,它运行正常 aws ec2 describe-security-groups \ --filters Name=ip-permission.from-port,Values=21 Name=ip-permission.to-Port,Values=21 \ --query 'SecurityGroups[].[Tags[?Key==`Owner`] | [0].Value, GroupId]' \ --output
aws ec2 describe-security-groups \
--filters Name=ip-permission.from-port,Values=21 Name=ip-permission.to-Port,Values=21 \
--query 'SecurityGroups[].[Tags[?Key==`Owner`] | [0].Value, GroupId]' \
--output text
但是,为了获取对所有人开放流量的安全组以及标记=Owner
的值,我运行了这个命令并得到了jmespath错误
aws ec2 describe-security-groups --filters Name=ip-permission.protocol,Values=-1 --query SecurityGroups[?IpPermissions[?IpProtocol == '-1' && contains(IpRanges[].CidrIp,'0.0.0.0/0')]].[Tags[?Key==`Owner`] | [0].Value, GroupId]' --output=text
--查询安全组[?IpPermissions[?IpProtocol==-1&&contains(IpRanges[].CidrIp,0.0.0.0/0)]]的值不正确。[标记[?键==所有者
].[0]。值,组ID]:错误的jmespath表达式:未知标记/:“”
我个人更喜欢使用SQL查询AWS资源的CLI。它可以比JME更详细,但更易于阅读,查询也更灵活
以下是您使用表的第一个SQL查询:
下面是查找打开端口的查询:
select
sg.tags->>'Owner',
sg.group_id
from
aws_vpc_security_group as sg
join aws_vpc_security_group_rule as rule on sg.group_id = rule.group_id
where
rule.type = 'ingress'
and rule.ip_protocol = '-1'
and rule.cidr_ip = '0.0.0.0/0'
您是否忘记了SecurityGroups前面的一个撇号?添加了类似的错误。下面的方法很有效。但是,当我尝试获取所有者标记及其值时,aws ec2描述安全组时失败--过滤器“Name=ip permission.protocol,Values=-1”--查询“SecurityGroups[?IpPermissions[?IpProtocol='-1'&&contains(IpRanges[].CidrIp,'0.0.0.0/0')]]]]].GroupId”--输出=text这些引号总是将我与aws CLI和JMESPATH混淆。尝试使用不同的引号,而不是反勾号。和/或尝试将表达式用不同的引号括起来。有时会让人讨厌。例如:
aws ec2描述安全组--query'SecurityGroups[?IpPermissions[?IpProtocol==“-1”&&contains(IpRanges[].CidrIp,“0.0.0.0/0”)].[Tags[?Key==“Owner”]|[0]。Value,GroupId]
,它似乎在我的Mac电脑zsh.Nathan下工作。这看起来很有希望。让我看看……谢谢!
select
sg.tags->>'Owner',
sg.group_id
from
aws_vpc_security_group as sg
join aws_vpc_security_group_rule as rule on sg.group_id = rule.group_id
where
rule.type = 'ingress'
and rule.ip_protocol = '-1'
and rule.cidr_ip = '0.0.0.0/0'