在describe-vpcs中按标签过滤的正确语法是什么?

时间:2014-11-21 09:22:27

标签: amazon-web-services amazon-ec2 amazon-vpc aws-cli

我想了解一个aws ec2 cli电话。我想在自定义标签上描述所有VPC然后文件管理器(vpcname = myvpc,但是在尝试多种组合后,我不断得到关于格式和使用--filters的冲突错误。使用作为参考[http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html][1]

  

aws --profile myProfile --region eu-west-1 ec2 describe-vpcs --filters   vpcname,myvpc

然而这会返回

Error parsing parameter '--filters': should be: Key value pairs, where values are separated by commas, and multiple pairs are separated by spaces.
--filters Name=string1,Values=string1,string2 Name=string1,Values=string1,string2

如此努力

  

aws --profile myProfile --region eu-west-1 ec2 describe-vpcs --filters   名称= vpcname,值= myvpc

然后返回

A client error (InvalidParameterValue) occurred when calling the DescribeVpcs operation: The filter 'vpcname' is invalid

所以尝试其他一些组合

aws --profile myProfile --region eu-west-1 ec2 describe-vpcs --filters tag :Name=vpcname,Values=myvpc

Error parsing parameter '--filters': should be: Key value pairs, where values are separated by commas, and multiple pairs are separated by spaces.
--filters Name=string1,Values=string1,string2 Name=string1,Values=string1,string2

关于如何格式化此请求的任何建议?

3 个答案:

答案 0 :(得分:17)

你非常接近解决它 - 唯一的问题是你没有指定valid filter for describe-vpcs。以下是与您的用例相关的过滤器:

tag:key=*value* - The key/value combination of a tag assigned to the resource.

因此,当它要求Name=string1,Values=string1...时,它需要:

  • Name = tag:TagName
  • 值= TagValue

请尝试使用此功能,使用其他自定义标记在本地工作:

aws ec2 describe-vpcs --filters Name=tag:vpcname,Values=myvpc

答案 1 :(得分:0)

在TAG变量中定义标记,在VALUE变量中定义值:

TAG=vpcname
VALUE=myvpc
aws ec2 describe-vpcs |\
jq -r ".Vpcs[] | select (.Tags[] | select(.Key==\"$TAG\") |\
select(.Value==\"$VALUE\"))"

答案 2 :(得分:0)

如果您尝试使用Ansible AWS * _facts调用执行相同的操作,则会遇到相同的问题。在Ansible中,正确的语法是:

ec2_vpc_net_facts: filters: "tag:vpcname": "myvpc"

我在这里只提到这一点是因为在尝试获取Ansible权限时,我的大多数Google搜索中都出现了这样的问题,并且我一直在Ansible中使用上述AWS cli示例,因为我无法正确获取过滤器。 / p>