Essencialmente --filter
é a condição usada para selecionar quais recursos você deseja descrever, listar, etc.
Por outro lado, --query
é a lista de campos que você deseja retornar na resposta. Você pode fazer uma filtragem simples com --query
, mas --filter
tende a ser mais poderoso.
Exemplo de aws ec2 describe-volumes help
:
To describe tagged volumes and filter the output
This example command describes all volumes that have the tag key Name and a value that begins with Test. The output is filtered to display only the tags and IDs of the volumes.
Command:
aws ec2 describe-volumes \ --filters Name=tag-key,Values="Name" Name=tag-value,Values="Test*" \ --query 'Volumes[*].{ID:VolumeId,Tag:Tags}'
Output:
[ { "Tag": [ { "Value": "Test2", "Key": "Name" } ], "ID": "vol-1234567890abcdef0" }, { "Tag": [ { "Value": "Test1", "Key": "Name" } ], "ID": "vol-049df61146c4d7901" } ]
Como você pode ver, o --filter
é usado para selecionar os registros necessários (ou seja, aqueles com tag Nome começando com a string Teste * . E --query
é usado para imprimir apenas as Tags (como Tag ) e o VolumeId (como ID ).
Espero que ajude:)