aws cli:如何查询列表值?

chr*_*ris 13 amazon-web-services aws-cli

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

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

如果我跑:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,SecurityGroups]
Run Code Online (Sandbox Code Playgroud)

我的输出看起来像:

i-xxxxxxx m1.type [{u'GroupName': 'groupName', u'GroupId': 'sg-xxxxx'}]
Run Code Online (Sandbox Code Playgroud)

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

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Tags[0].Value,Tags[0].Name]
Run Code Online (Sandbox Code Playgroud)

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

DrS*_*ork 11

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

 --query 'Reservations[*].Instances[*].Tags[?Key==`<keyname>`].Value[]'
Run Code Online (Sandbox Code Playgroud)

所以你有这个:

      "Tags" : [
        {
          "Value" : "webserver01",
          "Key" : "InstanceName"
        },
Run Code Online (Sandbox Code Playgroud)

你想要这样做:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key==`InstanceName`].Value[]'
Run Code Online (Sandbox Code Playgroud)