Cette documentation concerne AWS CLI uniquement la version 1 du. Pour la documentation relative à la version 2 du AWS CLI, consultez le guide de l'utilisateur de la version 2.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Filtrage de la sortie dans le AWS CLI
Le AWS Command Line Interface (AWS CLI) dispose d'un filtrage côté serveur et côté client que vous pouvez utiliser individuellement ou ensemble pour filtrer votre sortie. AWS CLI Le filtrage côté serveur est traité en premier et renvoie votre sortie pour le filtrage côté client.
-
Le filtrage côté serveur est pris en charge par l'API, et vous l'implémentez généralement avec un
--filter
paramètre. Le service renvoie uniquement des résultats correspondants, ce qui peut accélérer les temps de réponse HTTP pour les grands ensembles de données. -
Le filtrage côté client est pris en charge par le AWS CLI client à l'aide du
--query
paramètre. Ce paramètre possède des fonctionnalités que le filtrage côté serveur ne possède peut-être pas.
Rubriques
Filtrage côté serveur
Le filtrage côté serveur dans le AWS CLI est fourni par l'API du AWS service. Le AWS service renvoie uniquement les enregistrements de la réponse HTTP qui correspondent à votre filtre, ce qui peut accélérer les temps de réponse HTTP pour les grands ensembles de données. Le filtrage côté serveur étant défini par l'API du service, les noms des paramètres et les fonctions varient d'un service à l'autre. Les noms de paramètres couramment utilisés pour le filtrage sont les suivants :
-
--filters
https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html -
Noms commençant par le mot
filter
, par exemple--filter-expression
pour laaws dynamodb scan
commande.
Pour savoir si une commande spécifique dispose d'un filtrage côté serveur et sur les règles de filtrage, consultez le guide de AWS CLI référence AWS CLI version 2 du guide .
Filtrage côté client
AWS CLI fournit des fonctionnalités intégrées de filtrage côté client basées sur JSON avec le paramètre. --query
Le --query
paramètre est un outil puissant que vous pouvez utiliser pour personnaliser le contenu et le style de votre sortie. Le --query
paramètre prend la réponse HTTP qui revient du serveur et filtre les résultats avant de les afficher. Comme l'intégralité de la réponse HTTP est envoyée au client avant le filtrage, le filtrage côté client peut être plus lent que le filtrage côté serveur pour les grands ensembles de données.
Les requêtes utilisent JMESPath la syntaxe
Important
Le type de sortie que vous spécifiez modifie le mode de fonctionnement de l'--query
option :
-
Si vous le spécifiez
--output text
, la sortie est paginée avant que le--query
filtre ne soit appliqué, et la AWS CLI requête est exécutée une fois sur chaque page de la sortie. De ce fait, la requête inclut le premier élément correspondant sur chaque page, ce qui peut entraîner une sortie supplémentaire inattendue. Pour filtrer également la sortie, vous pouvez utiliser d'autres outils de ligne de commande tels quehead
outail
. -
Si vous spécifiez
--output json
si--output yaml-stream
la sortie est entièrement traitée comme une structure native unique avant que le--query
filtre ne soit appliqué. AWS CLI Exécute la requête une seule fois sur l'ensemble de la structure, produisant un résultat filtré qui est ensuite affiché.
Rubriques relatives au filtrage côté client
Avant de commencer
Note
Ces exemples d'expressions de filtre sont écrits pour des shells de base de type Linux. Lorsque vous utilisez ces exemples, veillez à utiliser les règles de citation appropriées pour votre terminal shell. La façon dont votre terminal interprète vos entrées peut modifier considérablement ce qui est envoyé au. AWS CLI La façon dont votre terminal lit les guillemets simples'
, les guillemets "
doubles ou les backticks `
peut modifier la façon dont le contenu est lu.
Pour de plus amples informations, veuillez consulter Utiliser des guillemets et des littéraux avec des chaînes dans AWS CLI.
La sortie JSON suivante montre un exemple de ce que le --query
paramètre peut produire. Le résultat décrit trois volumes Amazon EBS attachés à des EC2 instances Amazon distinctes.
$
aws ec2 describe-volumes
{ "Volumes": [ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-2e410a47", "State": "in-use", "SnapshotId": "snap-708e8348", "CreateTime": "2013-09-18T20:26:15.000Z", "Size": 8 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ] }
Identifiants
Les identificateurs sont les étiquettes des valeurs de sortie. Lorsque vous créez des filtres, vous utilisez des identifiants pour affiner les résultats de vos requêtes. Dans l'exemple de sortie suivant, tous les identificateurs tels que Volumes
AvailabilityZone
, et AttachTime
sont surlignés.
$
aws ec2 describe-volumes
{ "
Volumes
": [ { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2013-09-17T00:55:03.000Z", "InstanceId
": "i-a071c394", "VolumeId
": "vol-e11a5288", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-e11a5288", "State
": "in-use", "SnapshotId
": "snap-f23ec1c8", "CreateTime
": "2013-09-17T00:55:03.000Z", "Size
": 30 }, { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2013-09-18T20:26:16.000Z", "InstanceId
": "i-4b41a37c", "VolumeId
": "vol-2e410a47", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-2e410a47", "State
": "in-use", "SnapshotId
": "snap-708e8348", "CreateTime
": "2013-09-18T20:26:15.000Z", "Size
": 8 }, { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2020-11-20T19:54:06.000Z", "InstanceId
": "i-1jd73kv8", "VolumeId
": "vol-a1b3c7nd", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-a1b3c7nd", "State
": "in-use", "SnapshotId
": "snap-234087fb", "CreateTime
": "2020-11-20T19:54:05.000Z", "Size
": 15 } ] }
Pour plus d'informations, consultez la section Identifiants
Sélection dans une liste
Une liste ou un tableau est un identifiant suivi d'un crochet « [
» tel que Volumes
et Attachments
dans leAvant de commencer.
Syntaxe
<listName>[ ]
Pour filtrer toutes les sorties d'un tableau, vous pouvez utiliser la notation générique. Les expressions génériques*
notation.
L'exemple suivant interroge l'ensemble Volumes
du contenu.
$
aws ec2 describe-volumes \ --query 'Volumes[*]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ]
Pour afficher un volume spécifique du tableau par index, vous appelez le tableau index. Par exemple, le premier élément du Volumes
tableau a un indice de 0, ce qui donne lieu à la Volumes[0]
requête. Pour plus d'informations sur les index de tableaux, consultez la section expressions d'index
$
aws ec2 describe-volumes \ --query 'Volumes[0]'
{ "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }
Pour afficher une plage spécifique de volumes par index, utilisez slice
la syntaxe suivante, où start est l'index du tableau de départ, stop est l'index où le filtre arrête le traitement et step est l'intervalle de saut.
Syntaxe
<arrayName>[<start>:<stop>:<step>]
Si l'une de ces valeurs est omise dans l'expression de la tranche, elle utilise les valeurs par défaut suivantes :
-
Début — Le premier index de la liste, 0.
-
Stop : dernier index de la liste.
-
Étape — Aucune étape n'est sautée, la valeur étant 1.
Pour renvoyer uniquement les deux premiers volumes, vous devez utiliser une valeur de départ de 0, une valeur de fin de 2 et une valeur d'étape de 1, comme indiqué dans l'exemple suivant.
$
aws ec2 describe-volumes \ --query 'Volumes[0:2:1]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-2e410a47", "State": "in-use", "SnapshotId": "snap-708e8348", "CreateTime": "2013-09-18T20:26:15.000Z", "Size": 8 } ]
Comme cet exemple contient des valeurs par défaut, vous pouvez raccourcir la tranche de Volumes[0:2:1]
àVolumes[:2]
.
L'exemple suivant omet les valeurs par défaut et renvoie tous les deux volumes de l'ensemble du tableau.
$
aws ec2 describe-volumes \ --query 'Volumes[::2]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ]
Les étapes peuvent également utiliser des nombres négatifs pour filtrer dans l'ordre inverse d'un tableau, comme illustré dans l'exemple suivant.
$
aws ec2 describe-volumes \ --query 'Volumes[::-2]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 } ]
Pour plus d'informations, consultez la section Slices
Filtrer les données imbriquées
Pour affiner le filtrage des valeurs imbriquées, vous pouvez utiliser des sous-expressions en ajoutant un point et vos critères de filtre. Volumes[*]
Syntaxe
<expression>.<expression>
L'exemple suivant montre toutes les Attachments
informations pour tous les volumes.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments'
[ [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ] ]
Pour filtrer davantage les valeurs imbriquées, ajoutez l'expression pour chaque identificateur imbriqué. L'exemple suivant répertorie les State
pour tousVolumes
.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[*].State'
[ [ "attached" ], [ "attached" ], [ "attached" ] ]
Aplatir les résultats
Pour plus d'informations, consultez SubExpressions
Vous pouvez aplatir les résultats Volumes[*].Attachments[*].State
en supprimant la notation générique à l'origine de la Volumes[*].Attachments[].State
requête. L'aplatissement fréquent est utile pour améliorer la lisibilité des résultats.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].State'
[ "attached", "attached", "attached" ]
Pour plus d'informations, voir Flatten
Filtrage pour des valeurs spécifiques
Pour filtrer des valeurs spécifiques dans une liste, vous devez utiliser une expression de filtre, comme indiqué dans la syntaxe suivante.
Syntaxe
? <expression> <comparator> <expression>]
Les comparateurs d'expressions incluent ==
!=
,<
,, <=
>
, et>=
. L'exemple suivant filtre VolumeIds
pour tous Volumes
dans un Attached
State
.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId'
[ [ "vol-e11a5288" ], [ "vol-2e410a47" ], [ "vol-a1b3c7nd" ] ]
Cela peut ensuite être aplati, comme dans l'exemple suivant.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId[]'
[ "vol-e11a5288", "vol-2e410a47", "vol-a1b3c7nd" ]
L'exemple suivant filtre tous ceux VolumeIds
Volumes
dont la taille est inférieure à 20.
$
aws ec2 describe-volumes \ --query 'Volumes[?Size < `20`].VolumeId'
[ "vol-2e410a47", "vol-a1b3c7nd" ]
Pour plus d'informations, consultez Filtrer les expressions
Expressions de tuyauterie
Vous pouvez rediriger les résultats d'un filtre vers une nouvelle liste, puis filtrer le résultat avec une autre expression en utilisant la syntaxe suivante :
Syntaxe
<expression> | <expression>]
L'exemple suivant prend les résultats du filtre de l'Volumes[*].Attachments[].InstanceId
expression et affiche le premier résultat dans le tableau.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId | [0]'
"i-a071c394"
Pour ce faire, cet exemple crée d'abord le tableau à partir de l'expression suivante.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId'
"i-a071c394", "i-4b41a37c", "i-1jd73kv8"
Puis renvoie le premier élément de ce tableau.
"i-a071c394"
Pour plus d'informations, consultez la section Pipe Expressions
Filtrage pour plusieurs valeurs d'identifiant
Pour filtrer plusieurs identificateurs, vous devez utiliser une liste à sélection multiple en utilisant la syntaxe suivante :
Syntaxe
<listName>[].[<expression>, <expression>]
Dans l'exemple suivant, VolumeId
et VolumeType
sont filtrés dans la Volumes
liste, ce qui donne l'expression suivante.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType]'
[ [ "vol-e11a5288", "standard" ], [ "vol-2e410a47", "standard" ], [ "vol-a1b3c7nd", "standard" ] ]
Pour ajouter des données imbriquées à la liste, vous devez ajouter une autre liste de sélection multiple. L'exemple suivant développe l'exemple précédent en filtrant également pour InstanceId
et State
dans la Attachments
liste imbriquée. Cela donne l'expression suivante.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State]]'
[ [ "vol-e11a5288", "standard", [ [ "i-a071c394", "attached" ] ] ], [ "vol-2e410a47", "standard", [ [ "i-4b41a37c", "attached" ] ] ], [ "vol-a1b3c7nd", "standard", [ [ "i-1jd73kv8", "attached" ] ] ] ]
Pour qu'elle soit plus lisible, aplatissez l'expression comme indiqué dans l'exemple suivant.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State][]][]'
[ "vol-e11a5288", "standard", [ "i-a071c394", "attached" ], "vol-2e410a47", "standard", [ "i-4b41a37c", "attached" ], "vol-a1b3c7nd", "standard", [ "i-1jd73kv8", "attached" ] ]
Pour plus d'informations, consultez la section Liste de sélections multiples
Ajouter des étiquettes aux valeurs d'identification
Pour faciliter la lecture de cette sortie, utilisez un hachage à sélection multiple avec la syntaxe suivante.
Syntaxe
<listName>[].{<label>: <expression>, <label>: <expression>}
Il n'est pas nécessaire que votre étiquette d'identification soit identique au nom de l'identifiant. L'exemple suivant utilise l'étiquette VolumeType
pour les VolumeType
valeurs.
$
aws ec2 describe-volumes \ --query 'Volumes[].{VolumeType: VolumeType}'
[ { "VolumeType": "standard", }, { "VolumeType": "standard", }, { "VolumeType": "standard", } ]
Pour des raisons de simplicité, l'exemple suivant conserve les noms d'identifiant pour chaque étiquette et affiche les noms VolumeId
VolumeType
,InstanceId
, et State
pour tous les volumes :
$
aws ec2 describe-volumes \ --query 'Volumes[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[ { "VolumeId": "vol-e11a5288", "VolumeType": "standard", "InstanceId": "i-a071c394", "State": "attached" }, { "VolumeId": "vol-2e410a47", "VolumeType": "standard", "InstanceId": "i-4b41a37c", "State": "attached" }, { "VolumeId": "vol-a1b3c7nd", "VolumeType": "standard", "InstanceId": "i-1jd73kv8", "State": "attached" } ]
Pour plus d'informations, consultez la section Multiselect Hash
Fonctions
La JMESPath syntaxe contient de nombreuses fonctions que vous pouvez utiliser pour vos requêtes. Pour plus d'informations sur JMESPath les fonctions, voir Fonctions intégrées
Pour montrer comment intégrer une fonction dans vos requêtes, l'exemple suivant utilise cette sort_by
fonction. La sort_by
fonction trie un tableau en utilisant une expression comme clé de tri selon la syntaxe suivante :
Syntaxe
sort_by(<listName>, <sort expression>)[].<expression>
L'exemple suivant utilise l'exemple de hachage à sélection multiple précédent et trie la sortie par. VolumeId
$
aws ec2 describe-volumes \ --query 'sort_by(Volumes, &VolumeId)[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[ { "VolumeId": "vol-2e410a47", "VolumeType": "standard", "InstanceId": "i-4b41a37c", "State": "attached" }, { "VolumeId": "vol-a1b3c7nd", "VolumeType": "standard", "InstanceId": "i-1jd73kv8", "State": "attached" }, { "VolumeId": "vol-e11a5288", "VolumeType": "standard", "InstanceId": "i-a071c394", "State": "attached" } ]
Pour plus d'informations, consultez sort_by sur le site Web
--query
Exemples avancés
Pour extraire des informations d'un élément spécifique
L'exemple suivant utilise le paramètre --query
pour rechercher un élément spécifique dans une liste, puis extrait les informations de cet élément. L'exemple répertorie tous les éléments AvailabilityZones
associés au point de terminaison de service spécifié. Il extrait l'élément de la liste ServiceDetails
pour lequel ServiceName
est spécifié, puis il génère en sortie le champ AvailabilityZones
à partir de cet élément sélectionné.
$
aws --region us-east-1 ec2 describe-vpc-endpoint-services \ --query 'ServiceDetails[?ServiceName==`com.amazonaws.us-east-1.ecs`].AvailabilityZones'
[ [ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e", "us-east-1f" ] ]
Pour afficher les instantanés après la date de création spécifiée
L'exemple suivant montre comment référencer tous vos instantanés qui ont été créés après une date spécifiée, y compris certains champs disponibles dans la sortie.
$
aws ec2 describe-snapshots --owner self \ --output json \ --query 'Snapshots[?StartTime>=`2018-02-07`].{Id:SnapshotId,VId:VolumeId,Size:VolumeSize}'
[ { "id": "snap-0effb42b7a1b2c3d4", "vid": "vol-0be9bb0bf12345678", "Size": 8 } ]
Pour afficher le plus récent AMIs
L'exemple suivant répertorie les cinq images Amazon Machine (AMIs) les plus récentes que vous avez créées, triées de la plus récente à la plus ancienne.
$
aws ec2 describe-images \ --owners self \ --query 'reverse(sort_by(Images,&CreationDate))[:5].{id:ImageId,date:CreationDate}'
[ { "id": "ami-0a1b2c3d4e5f60001", "date": "2018-11-28T17:16:38.000Z" }, { "id": "ami-0a1b2c3d4e5f60002", "date": "2018-09-15T13:51:22.000Z" }, { "id": "ami-0a1b2c3d4e5f60003", "date": "2018-08-19T10:22:45.000Z" }, { "id": "ami-0a1b2c3d4e5f60004", "date": "2018-05-03T12:04:02.000Z" }, { "id": "ami-0a1b2c3d4e5f60005", "date": "2017-12-13T17:16:38.000Z" } ]
Pour afficher les instances Auto Scaling défectueuses
L'exemple suivant montre uniquement InstanceId
les instances défectueuses du groupe Auto Scaling spécifié.
$
aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-name
My-AutoScaling-Group-Name
\ --output text \ --query 'AutoScalingGroups[*].Instances[?HealthStatus==`Unhealthy`].InstanceId'
Pour inclure des volumes dotés de la balise spécifiée
L'exemple suivant décrit toutes les instances dotées d'une test
balise. Tant qu'une autre balise est test
attachée au volume à côté, le volume est toujours renvoyé dans les résultats.
Expression ci-dessous pour renvoyer toutes les balises dont la test
balise est dans un tableau. Toutes les balises qui ne sont pas les test
balises contiennent une null
valeur.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
Pour exclure les volumes dotés de la balise spécifiée
L'exemple suivant décrit toutes les instances sans test
balise. L'utilisation d'une ?Value != `test`
expression simple ne fonctionne pas pour exclure un volume, car les volumes peuvent avoir plusieurs balises. Tant qu'une autre balise est test
attachée au volume à côté, le volume est toujours renvoyé dans les résultats.
Pour exclure tous les volumes dotés de test
cette balise, commencez par l'expression ci-dessous pour renvoyer toutes les balises contenant la test
balise dans un tableau. Toutes les balises qui ne sont pas les test
balises contiennent une null
valeur.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
Filtrez ensuite tous les test
résultats positifs à l'aide de la not_null
fonction.
$
aws ec2 describe-volumes \ --query 'Volumes[?!not_null(Tags[?Value == `test`].Value)]'
Répartissez les résultats pour les aplatir, ce qui donne lieu à la requête suivante.
$
aws ec2 describe-volumes \ --query 'Volumes[?!not_null(Tags[?Value == `test`].Value)] | []'
Combinaison du filtrage côté serveur et côté client
Vous pouvez utiliser conjointement le filtrage côté serveur et côté client. Le filtrage côté serveur est effectué en premier, ce qui envoie les données au client que le --query
paramètre filtre ensuite. Si vous utilisez de grands ensembles de données, le fait d'utiliser d'abord le filtrage côté serveur peut réduire la quantité de données envoyées au client pour chaque AWS CLI appel, tout en conservant la puissante personnalisation qu'offre le filtrage côté client.
L'exemple suivant répertorie les EC2 volumes Amazon utilisant le filtrage côté serveur et côté client. Le service filtre une liste de tous les volumes attachés dans la zone de us-west-2a
disponibilité. Le paramètre --query
supplémentaire limite la sortie uniquement vers les volumes avec une valeur Size
supérieure à 50, et indique uniquement les champs spécifiés avec des noms définis par l'utilisateur.
$
aws ec2 describe-volumes \ --filters "Name=availability-zone,Values=us-west-2a" "Name=status,Values=attached" \ --query 'Volumes[?Size > `50`].{Id:VolumeId,Size:Size,Type:VolumeType}'
[ { "Id": "vol-0be9bb0bf12345678", "Size": 80, "VolumeType": "gp2" } ]
L'exemple suivant récupère une liste d'images qui répondent à plusieurs critères. Il utilise ensuite le paramètre --query
pour trier la sortie CreationDate
, en sélectionnant uniquement les plus récentes. Il affiche ensuite le ImageId
de cette seule image.
$
aws ec2 describe-images \ --owners amazon \ --filters "Name=name,Values=amzn*gp2" "Name=virtualization-type,Values=hvm" "Name=root-device-type,Values=ebs" \ --query "sort_by(Images, &CreationDate)[-1].ImageId" \ --output text
ami-00ced3122871a4921
L'exemple suivant montre comment afficher le nombre de volumes disponibles qui sont supérieurs à 1 000 E/S par seconde en utilisant length
pour compter leur nombre dans une liste.
$
aws ec2 describe-volumes \ --filters "Name=status,Values=available" \ --query 'length(Volumes[?Iops > `1000`])'
3
Ressources supplémentaires
- JMESPath Borne
-
JMESPath Terminal est une commande de terminal interactive permettant d'expérimenter JMESPath des expressions utilisées pour le filtrage côté client. À l'aide de
jpterm
cette commande, le terminal affiche les résultats de la requête immédiatement au fur et à mesure que vous tapez. Vous pouvez directement diriger la AWS CLI sortie vers le terminal, ce qui permet d'expérimenter des requêtes avancées.L'exemple suivant indique des canaux
aws ec2 describe-volumes
de sortie directement vers JMESPath le terminal.$
aws ec2 describe-volumes | jpterm
Pour plus d'informations sur le JMESPath terminal et les instructions d'installation, voir JMESPathTerminal
activé GitHub. - utilitaire jq
-
L'
jq
utilitaire vous permet de transformer votre sortie côté client dans le format de sortie que vous souhaitez. Pour plus d'informationsjq
et des instructions d'installation, consultez jqon GitHub.