我想了解一个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
关于如何格式化此请求的任何建议?
答案 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...
时,它需要:
请尝试使用此功能,使用其他自定义标记在本地工作:
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>