13

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

4 回答 4

14

从 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[]'
于 2014-05-28T20:20:04.003 回答
3

您可能想要使用的是 --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 的演讲中的幻灯片,了解更多示例

于 2014-03-30T21:31:09.870 回答
0

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

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Tags[?Key==`Name`].Value[*]]'
于 2014-04-22T19:43:37.763 回答
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';

于 2021-01-28T15:36:31.330 回答