Création de requêtes Cloud Advisor
Passez en revue les concepts de base du langage de requête pour Cloud Advisor, notamment une explication de la syntaxe et des règles pour que vous puissiez créer vos propres requêtes.
Les requêtes appliquent des conditions de recherche à un ensemble d'attributs et vous permettent de trier les résultats. Si vous souhaitez effectuer une recherche sur tous les types de ressource et attributs de ressource pris en charge et que vous n'avez pas besoin de trier les résultats de recherche, vous n'avez pas besoin d'ajouter l'ordre des attributs.
Cette rubrique comprend les sections suivantes :
Droits d'accès IAM requis
Les ressources qui apparaissent dans les résultats de la requête dépendent des droits d'accès que vous avez définis pour le type de ressource. Vous ne voyez pas nécessairement les résultats pour chaque ressource du compartiment ou de la location. Par exemple, si votre compte utilisateur n'est pas associé à une stratégie qui vous donne, au moins, le droit d'accès inspect
sur le type de ressource
, vous ne pouvez pas interroger les ressources Cloud Advisor. (Le verbe optimizer-resource-action
inspect
vous permet de répertorier et d'obtenir des ressources.) Cloud Advisor n'affiche aucun résultat pour les requêtes.
Pour plus d'informations sur les stratégies, reportez-vous à Fonctionnement des stratégies. Pour plus d'informations sur les droits d'accès spécifiques requis pour l'opération d'API de liste pour le type de ressource requis, reportez-vous à Création de stratégies Cloud Advisor.
Notions de base sur les requêtes
Les exemples suivants illustrent la syntaxe de base d'une requête Cloud Advisor :
query ResourceAction where <conditions> sorted by <fieldName> <order>
Ou :
query ResourceAction matching <keywords>
Cloud Advisor ignore les caractères non imprimables, les retraits et les sauts de ligne. Les exemples de requêtes comprennent des retraits pour améliorer la lisibilité. Afin de présenter uniquement la syntaxe, les chevrons (<>) et le texte en italique indiquent des variables, lesquelles peuvent être constituées d'un ou de plusieurs mots-clés.
Les clauses suivantes sont incluses dans une requête :
query
: (requise) sélectionne les ressources à renvoyer en fonction des clauses suivantes. Les instructions de requête commencent toujours par le motquery
.where
: met en correspondance les ressources avec lesconditions
indiquées.matching
: met en correspondance les ressources avec le texte indiqué, qu'il corresponde exactement au texte indiqué ou au type de ressource ou encore qu'il apparaisse dans un attribut de ressource indexé.sorted by
: permet de trier les ressources selonfieldName
, dans l'ordre indiqué parorder
. Si vous n'incluez pas cette clause, Cloud Advisor répertorie les résultats par date de création dans l'ordre décroissant, en répertoriant les ressources les plus récentes en premier.
Les clauses sont facultatives, sauf indication contraire. A des fins de mise en correspondance, vous pouvez utiliser la clause where
et la clause matching
séparément ou ensemble.
Conditions
La clause where
applique les conditions
qui filtrent les résultats renvoyés par Cloud Advisor. Vous pouvez spécifier des instructions de condition. Pour plus d'informations sur les conditions multiples, reportez-vous à Regroupement de conditions.
Les conditions
d'une requête sont constituées des éléments suivants :
<fieldName> <operation> <value>
Le mot-clé fieldName
est l'attribut de ressource par rapport auquel l'attribut operation
et le mot-clé value
souhaité de cet attribut sont évalués. Chaque champ est associé à un type de champ. Le type de champ indique le format attendu pour toute valeur de ce champ. Le type d'opération
que vous pouvez utiliser dans une instruction de conditions
dépend du type de champ.
Dans les conditions
de la requête, une opération
est un opérateur de comparaison qui s'applique à la valeur
dans l'instruction. Le mot-clé value
fait référence à la valeur de fieldName
que vous avez indiquée. Cloud Advisor évalue si l'attribut indiqué du type de ressource choisi correspond ou ne correspond pas à la valeur value
, selon l'opération. Dans une requête, toutes les valeurs de type chaîne ou date/heure doivent être placées entre des guillemets simples (') ou doubles (").
Le tableau suivant décrit les opérations prises en charge pour les requêtes de ressources :
Opération | Description | Types de champ pris en charge | Sensible à la casse ? | Exemple |
---|---|---|---|---|
=
|
Est égal à, ou correspond exactement dans le cas des chaînes |
Chaîne, entier, rationnel, booléen, date/heure |
Non |
Si le paramètre value était 'backUp', il serait mis en correspondance avec "backup", "BACKUP", "BackUp", "backUp" ou toute autre variante de majuscules/minuscules. |
!=
|
N'est pas égal à |
Chaîne, entier, rationnel, booléen, date/heure |
Non |
Si le paramètre value était 'backUp', il serait mis en correspondance avec tout élément différent de "backUp", "backup" ou toute autre variante de majuscules/minuscules. Il correspondrait également à tout élément qui ne contient pas les caractères 'backup' dans cet ordre. |
==
|
Strictement égal à |
Chaîne |
Oui |
Si le paramètre value était 'backUp', il serait uniquement mis en correspondance avec "backUp" et aucune autre variante de majuscules/minuscules. |
!==
|
Est strictement différent de |
Chaîne |
Oui |
Si le paramètre value était 'backUp', il serait mis en correspondance avec "backup", "BACKup" ou tout autre élément, à l'exception de "backUp", avec cette mise en majuscules/minuscules exacte. |
=~
|
Contient |
Chaîne |
Non |
Si le paramètre value était 'backUp', il serait mis en correspondance avec tous les éléments égaux à "backup", "BACKUP", "BackUp", "backUp" ou toute autre variante de majuscules/minuscules, ou avec ceux contenant ces caractères dans cet ordre, avec d'autres caractères. |
>=
|
Est supérieur ou égal à |
Entier, rationnel, date/heure |
Non applicable |
Pour une requête dont la condition est size >= 5 , tous les résultats ont une valeur supérieure ou égale à 5 dans le champ nommé size. |
>
|
Est supérieur à |
Entier, rationnel, date/heure |
Non applicable |
Pour une requête dont la condition est size > 5 , tous les résultats ont une valeur supérieure à 5 dans le champ nommé size. |
<=
|
Est inférieur ou égal à |
Entier, rationnel, date/heure |
Non applicable |
Pour une requête dont la condition est size <= 5 , tous les résultats ont une valeur inférieure ou égale à 5 dans le champ nommé size. |
<
|
Est inférieur à |
Entier, rationnel, date/heure |
Non applicable |
Pour une requête dont la condition est size < 5 , tous les résultats ont une valeur inférieure à 5 dans le champ nommé size. |
Le tableau suivant répertorie quelques exemples d'attributs de ressource appartenant à chaque catégorie de types de champ pris en charge. Le type de champ indique le format attendu pour un champ donné et le type d'opération
avec lequel vous pouvez l'associer dans une instruction conditions
.
Le tableau n'inclut pas tous les exemples possibles pour un type de champ donné. Pour connaître le format attendu par le service Cloud Advisor pour un attribut de ressource donné, vous pouvez utiliser l'API ou l'interface de ligne de commande pour en savoir plus sur les attributs de ressource. Vous pouvez également consulter la documentation relative à l'API. La documentation d'API inclut une référence pour chaque type de ressource pris en charge qui spécifie les attributs, leurs types de champ, ainsi que toute restriction.
Type | Exemples d'attributs de ressource |
---|---|
Chaîne | Noms d'affichage, états de cycle de vie, domaines de disponibilité, balises, blocs CIDR et URL |
Entier | Taille ou longueur d'une ressource |
Rationnel | Stockage de données disponible |
Booléen | Indique si une fonctionnalité est activée ou configurée, si une ressource est en bon état, si une ressource est publique ou privée, s'il s'agit de la dernière version et si quelque chose est autorisé |
Date/heure | Dates de création, dates de dernière mise à jour, dates de dernière indexation et redémarrages de maintenance programmés |
Regroupement de conditions
En incluant plusieurs instructions de condition dans une requête, vous pouvez affiner les résultats en fonction de plusieurs critères. Vous pouvez regrouper plusieurs conditions en utilisant les opérateurs logiques &&
(esperluettes, pour indiquer l'opérateur logique AND) ou ||
(barres verticales pour indiquer l'opérateur logique OR). Par exemple :
resourceType = 'Compute' && status = 'Active' && regionName = 'us-ashburn-1'
Vous ne pouvez pas combiner deux opérateurs logiques différents dans la même requête, sauf si vous entourez un groupe de prédicats de parenthèses. Dans le cas contraire, les conditions multiples peuvent uniquement utiliser le même opérateur logique. Par exemple :
(resourceType = 'Compute' && status = 'Active' && regionName = 'us-region-1') || status != 'Implemented'
Dans l'exemple précédent, tous les résultats renvoyés ont Compute en tant que valeur pour resourceType, Active en tant que valeur de statut et us-region-1 en tant que valeur pour regionName, ou leur champ de statut a une valeur autre que Implémenté.
Le groupe suivant est également acceptable :
status = 'Implemented' && (resourceType = 'Compute' || lifecycleState != 'FAILED')
Dans l'exemple précédent, tous les résultats renvoyés ont été implémentés en tant que valeur de statut et Compute en tant que valeur pour resourceType ou tout autre valeur que FAILED pour lifecycleState.
Cloud Advisor n'effectue pas d'évaluation de gauche à droite pour réduire l'ambiguité ou clarifier l'intention.
Valeurs de date et d'heure
Vous pouvez indiquer des valeurs de date et d'heure à l'aide de l'un des formats de chaîne de modèle suivants :
Format | Exemples | Commentaires |
---|---|---|
<yyyy>-<MM>-<dd> <HH>:<mm>:<ss> <TimeZone>
|
'2018-06-19 16:15:41 PDT', '2018-06-19 16:15:41 -08:00' |
TimeZone est facultatif. Si TimeZone est omis, UTC est utilisé. |
<EEE>, <d> <MMM> <yyyy> <HH>:<mm>:<ss> <TimeZone>
|
'Tue, 19 Jun 2018 16:15:41 +0300', '19 June 2018 16:15:41' |
EEE est facultatif. MMM peut également être exprimé sous la forme MMMM . TimeZone est également facultatif. Si TimeZone est omis, UTC est utilisé. |
<yyyy>-<MM>-<dd>T<HH>:<mm>:<ss>Z
|
'2018-06-19T16:15:41Z' |
Heure au format UTC. ' |
Vous devez respecter l'espacement. Interprétez les tirets, les deux-points, les virgules, et les caractères 'T'et 'Z' de manière littérale. Pour interpréter les valeurs d'espace réservé dans le tableau précédent, vous pouvez vous reporter à la syntaxe de modèle suivante :
Lettre | Composant de date ou d'heure | Présentation |
---|---|---|
y
|
Année |
Année |
M
|
Mois de l'année |
Mois |
d
|
Jour du mois |
Jour |
H
|
Heure de la journée (00-23) | Nombre |
m
|
Minute de l'heure | Nombre |
s
|
Des secondes de la minute | Nombre |
E
|
Jour de la semaine | Texte |
Les lettres de modèle répétées indiquent leur présentation exacte. Par exemple, 'HH' signifie que vous devez utiliser '00' et non '0' pour indiquer minuit. De même, 'EEE' signifie que vous devez utiliser 'Tue' et non 'Tuesday'. De même, 'MM' requiert l'utilisation de '09' au lieu de '9' pour représenter le mois de septembre.
TimeZone
est facultatif mais, dans le format choisi, vous pouvez indiquer TimeZone
de l'une des façons suivantes :
- Nom. Vous pouvez spécifier un fuseau horaire par son nom, par exemple GMT ou PDT. Les valeurs ne respectent pas les majuscules/minuscules.
- Valeur de décalage GMT. Vous pouvez indiquer un fuseau horaire en fonction de son décalage GMT. Par exemple, GMT-08:00. Les valeurs ne respectent pas les majuscules/minuscules.
- ISO 8601, fuseau horaire. Vous pouvez spécifier un fuseau horaire conformément à la norme ISO 8601. Par exemple, -08, -0800 ou -08:00.
Au lieu d'utiliser l'un des formats précédents, vous pouvez également spécifier une valeur date/heure en tant que constante now
. La constante now
représente l'heure actuelle au niveau de granularité des secondes dans une minute.
Enfin, vous pouvez ajouter ou soustraire des intervalles de temps aux valeurs de date/d'heure. Par exemple, vous pouvez exécuter une requête pour les ressources créées dans les cinq minutes par rapport à une heure spécifique. La recherche prend en charge les intervalles de temps suivants :
Lettre | Composant de date ou d'heure |
---|---|
s
|
Secondes |
m
|
Minutes |
h
|
Heures |
d
|
Jours |
w
|
Semaines |
Pour spécifier un intervalle en fonction d'une valeur date/heure, utilisez l'un des formats suivants :
- maintenant - 3h
- 2018-06-19 16:15:41 PDT + 1H
Tri
La dernière clause d'une requête de ressource est la clause sorted by
qui est facultative. La clause sorted by
trie les résultats renvoyés par Cloud Advisor en fonction du nom du champ et les répertorie en fonction de la valeur order
que vous indiquez. Par défaut, si vous n'indiquez pas d'ordre de tri, les résultats sont toujours triés par date/heure de création dans l'ordre décroissant.
Dans la clause sorted by
, vous pouvez indiquer les éléments suivants :
fieldName
: champ utilisé par Cloud Advisor pour trier les résultats. Vous pouvez indiquer n'importe quel champ de n'importe quelle ressource. Les ressources qui ne contiennent pas le champ que vous spécifiez sont répertoriées après les ressources concernées.order
: vous pouvez spécifier asc ou desc. Si vous indiquez asc, les résultats sont triés par ordre croissant. Si vous indiquez desc, les résultats sont triés par ordre décroissant.