问题
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