aws cli:如何查询列表值?

时间:2013-12-20 15:28:00

标签: amazon-web-services aws-cli

aws cli有一个--query选项,允许您只选择一些信息。

举个例子,我有兴趣从ec2 describe-instances获取安全组名称。

如果我跑:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,SecurityGroups]

我的输出如下:

i-xxxxxxx m1.type [{u'GroupName': 'groupName', u'GroupId': 'sg-xxxxx'}]

我还可以使用索引访问列表中的元素:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Tags[0].Value,Tags[0].Name]

是否可以查询标签,以便代替Tag [0]搜索指定名称的标签?

4 个答案:

答案 0 :(得分:10)

从1.3.0开始,您现在可以查询以下信息:

 --query 'Reservations[*].Instances[*].Tags[?Key==`<keyname>`].Value[]'

所以你有这个:

      "Tags" : [
        {
          "Value" : "webserver01",
          "Key" : "InstanceName"
        },

你想要这样做:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key==`InstanceName`].Value[]'

答案 1 :(得分:2)

您可能想要使用的是--filters选项:

aws ec2 describe-instances --output text --filters "Name=tag-key, Values=SecurityGroups, Name=tag-value, Values=Foo" --region us-east-1

您可以将过滤器更改为“查询”您要查找的确切字段。

在亚特兰大AWS聚会小组的新AWS CLI上讨论此slideshare以获取更多示例

答案 2 :(得分:0)

这种方式对我有用:(这只适用于1.3.0及更高版本)

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Tags[?Key==`Name`].Value[*]]'

答案 3 :(得分:0)

select security_groups from aws.aws_ec2_instance;
> select security_groups from aws.aws_ec2_instance limit 1;
+---------------------------------------------------------------------------------------------------------------------------------+
|                                                         security_groups                                                         |
+---------------------------------------------------------------------------------------------------------------------------------+
| [{"GroupId":"sg-xxxx","GroupName":"xxxx"},{"GroupId":"sg-xxxxxx","GroupName":"xxxx"}] |
+---------------------------------------------------------------------------------------------------------------------------------+

这只会列出您的实例的安全组。

你也可以使用

select security_groups from aws.aws_ec2_instance where instance_id = 'i-xxxxxx';