Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS CLI表达式:错误的jmespath表达式:未知标记_Amazon Web Services_Aws Cli - Fatal编程技术网

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'