What is the correct syntax for filtering by tag in describe-vpcs?

梦想与她 提交于 2019-12-04 11:10:59

问题


I am trying to understand a aws ec2 cli call. I am looking to describe all VPC then filer on a custom tag (vpcname=myvpc, however after trying multiple combinations I keep getting conflicting errors about the format and use of --filters. using as a reference [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

however this returns

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

so trying

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

and it returns

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

so trying a few other combinations

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

Any advice on how I format this request?


回答1:


You got pretty close to solving it -- the only problem is that you are not specifying a valid filter for describe-vpcs. Here's the filter that would be relevant to your use case:

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

So when it is asking for Name=string1,Values=string1..., it expects:

  • Name=tag:TagName
  • Values=TagValue

Try this instead, works for me locally with a different custom tag:

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



回答2:


Define tag in TAG variable and value in VALUE variable:

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



回答3:


If you are trying to do the same thing using the Ansible AWS *_facts calls you have the same kind of issue. In Ansible the correct syntax is:

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

I only mention this here because this SO question came up in most of my google searches when trying to get the Ansible right and I had been using the AWS cli example above in Ansible because I couldn't get the filter right.



来源:https://stackoverflow.com/questions/27057932/what-is-the-correct-syntax-for-filtering-by-tag-in-describe-vpcs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!