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 optimizer-resource-action, vous ne pouvez pas interroger les ressources Cloud Advisor. (Le verbe 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 mot query.
  • where : met en correspondance les ressources avec les conditions 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 selon fieldName, dans l'ordre indiqué par order. 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. 'T' et 'Z' respectent la casse.

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.