aws cli 中的 --query 和 --filter 有什么区别?建议使用哪一个?

aws cli 中的 --query 和 --filter 有什么区别?建议使用哪一个?

我开始学习 aws cli,我只是想知道aws cli 中--query和之间的区别--filter?什么时候应该使用--query--filter选项?

答案1

本质上--filter状况用于选择哪些资源您想要描述、列出等等。

另一方面--query字段列表您希望在响应中返回的内容。您也可以使用进行一些简单的过滤,--query但过滤--filter功能往往更强大。

示例来自aws ec2 describe-volumes help

描述标记卷并过滤输出

此示例命令描述了具有标签键的所有卷姓名 以及以 开头的值测试。输出经过过滤,仅显示标签和 ID的卷数。

命令:

aws ec2 describe-volumes \
    --filters Name=tag-key,Values="Name" Name=tag-value,Values="Test*" \
    --query 'Volumes[*].{ID:VolumeId,Tag:Tags}'

输出:

[
  {
     "Tag": [ { "Value": "Test2", "Key": "Name" } ],
     "ID": "vol-1234567890abcdef0"
  },
  {
     "Tag": [ { "Value": "Test1", "Key": "Name" } ],
     "ID": "vol-049df61146c4d7901"
  }
]

如您所见,--filter用于选择所需的记录(即带有标签的记录姓名以字符串开头测试*。然后--query仅用于检索标签(作为标签)和卷ID(作为ID)。

希望有帮助:)

答案2

接受的答案在某种程度上暗示了这一点,但更准确地说:

  • --filter执行服务器端过滤,AWS 服务仅返回符合过滤器的记录
  • --query执行客户端过滤,AWS 服务将在响应中返回所有记录/字段,并且只有与查询匹配的记录才会显示在输出中

因此,如果输出中存在大量潜在记录,则使用--filterAWS 服务进行繁重的工作(过滤),请参阅官方文档了解详情。

相关内容