

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.

# Interrogation de l'état de configuration actuel des AWS ressources avec AWS Config
<a name="querying-AWS-resources"></a>


|  | 
| --- |
| Présentation d'une fonctionnalité d'aperçu pour les requêtes avancées qui vous permet d'utiliser les fonctionnalités de l'intelligence artificielle générative (IA générative) pour saisir des instructions dans un anglais simple et les convertir dans un format de ready-to-use requête. Pour plus d’informations, consultez [Processeur de requêtes en langage naturel pour les requêtes avancées](https://docs.aws.amazon.com/config/latest/developerguide/query-assistant.html). | 

Vous pouvez l'utiliser AWS Config pour interroger l'état de configuration actuel des AWS ressources en fonction des propriétés de configuration d'un seul compte et d'une seule région ou de plusieurs comptes et régions. Vous pouvez effectuer des requêtes basées sur les propriétés par rapport aux métadonnées de l'état actuel des AWS ressources dans une liste de ressources prises en charge. AWS Config Pour plus d'informations sur la liste des types de ressources pris en charge, consultez [Types de ressources pris en charge pour les requêtes avancées](https://github.com/awslabs/aws-config-resource-schema/tree/master/config/properties/resource-types).

*Les requêtes avancées* fournissent un point de terminaison de requête unique et un langage de requête pour obtenir les métadonnées de l'état actuel des ressources sans effectuer d'appels d'API de description spécifiques au service. Vous pouvez utiliser des agrégateurs de configuration pour exécuter les mêmes requêtes à partir d'un compte central sur plusieurs comptes et AWS régions. 

**Topics**
+ [Fonctionnalités](#query-features)
+ [Composants d'une requête](query-components.md)
+ [Éditeur de requête (Console)](query-using-sql-editor-console.md)
+ [Éditeur de requête (AWS CLI)](query-using-sql-editor-cli.md)
+ [Processeur de requêtes en langage naturel](query-assistant.md)
+ [Exemples de requêtes](example-query.md)
+ [Exemples de requêtes relationnelles](examplerelationshipqueries.md)
+ [Limitations](#query-limitations)
+ [Gamme CIDR notation/IP](#query-cidr-notation)
+ [Propriétés multiples au sein d'un tableau](#array-property-query-behavior)
+ [Prise en charge de la région](#query-regionsupport)

## Fonctionnalités
<a name="query-features"></a>

AWS Config utilise un sous-ensemble de la `SELECT` syntaxe du langage de requête structuré (SQL) pour effectuer des requêtes basées sur les propriétés et des agrégations sur les données des éléments de configuration (CI) actuels. La complexité des requêtes varie, qu'il s'agisse de correspondances avec and/or des identifiants de ressources de balises ou de requêtes plus complexes, telles que l'affichage de tous les compartiments Amazon S3 pour lesquels le versionnement est désactivé. Cela vous permet de demander exactement l'état actuel des ressources dont vous avez besoin sans effectuer d'appels d'API AWS spécifiques au service.

Il prend en charge les fonctions d'agrégation telles que `AVG`, `COUNT`, `MAX`, `MIN` et `SUM`.

Vous pouvez utiliser une requête avancée pour :
+ la gestion des stocks : par exemple, pour récupérer la liste des instances Amazon EC2 d'une taille particulière.
+ la sécurité et l'intelligence opérationnelle : par exemple, pour récupérer la liste des ressources dont une propriété de configuration spécifique est activée ou désactivée.
+ l'optimisation des coûts : par exemple, pour dresser la liste des volumes Amazon EBS qui ne sont attachés à aucune instance EC2.
+ Données de conformité ; par exemple, pour récupérer une liste de tous vos packs de conformité et de leur statut de conformité.

Pour plus d'informations sur l'utilisation du langage de requête AWS SQL, voir [Qu'est-ce que le langage SQL (langage de requête structuré) ?](https://aws.amazon.com/what-is/sql/) .

## Limitations
<a name="query-limitations"></a>

**Note**  
La requête avancée ne prend pas en charge l'interrogation de ressources qui n'ont pas été configurées pour être enregistrées par l'enregistreur de configuration. AWS Config crée des éléments de configuration (CIs) `ResourceNotRecorded` dans le `configurationItemStatus` cas où une ressource a été découverte mais n'est pas configurée pour être enregistrée par l'enregistreur de configuration. Bien qu'un agrégateur les agrège CIs, les requêtes avancées ne prennent pas en charge les requêtes CIs avec. `ResourceNotRecorded` Mettez à jour les paramètres de votre enregistreur afin d'activer l'enregistrement des types de ressources que vous souhaitez interroger.

En tant que sous-ensemble de la commande SQL `SELECT`, la syntaxe de requête présente les limitations suivantes :
+ Pas de prise en charge pour les mots clés `ALL`, `AS`, `DISTINCT`, `FROM`, `HAVING`, `JOIN` et `UNION` mots clés dans une requête. Les requêtes de valeur `NULL` ne sont pas prises en charge.
+ Aucune prise en charge des `CASE` instructions complexes permettant de créer un champ de priorité directement dans la requête.
+ Pas de prise en charge des requêtes sur des ressources tierces. Les ressources tierces récupérées à l'aide de requêtes avancées auront le champ de configuration défini comme `NULL`.
+ Pas de prise en charge des structures imbriquées (comme les balises) à décompresser avec des requêtes SQL.
+ Aucune prise en charge de l'interrogation des ressources supprimées. Pour découvrir les ressources supprimées, voir [Recherche de ressources découvertes par AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/looking-up-discovered-resources.html).
+ La commande `SELECT` raccourcie permettant de sélectionner toutes les colonnes (à savoir `SELECT *`) sélectionne uniquement les propriétés scalaires de niveau supérieur d'un élément de configuration. Les propriétés scalaires renvoyées sont `accountId`, `awsRegion`, `arn`, `availabilityZone`, `configurationItemCaptureTime`, `resourceCreationTime`, `resourceId`, `resourceName`, `resourceType` et `version`.
+ Limitations propres aux caractères génériques :
  + Les caractères génériques sont pris en charge uniquement pour les valeurs de propriété et non pour les clés de propriété (par exemple, `...WHERE someKey LIKE 'someValue%'` est pris en charge, mais `...WHERE 'someKey%' LIKE 'someValue%'` n'est pas pris en charge).
  + Prise en charge uniquement des caractères génériques en suffixe (par exemple, `...LIKE 'AWS::EC2::%'` et `...LIKE 'AWS::EC2::_'` sont pris en charge, mais `...LIKE '%::EC2::Instance'` et `...LIKE '_::EC2::Instance'` ne sont pas pris en charge).
  + Les correspondances d'un caractère générique doivent compter au moins trois caractères (par exemple, `...LIKE 'ab%'` et `...LIKE 'ab_'` ne sont pas autorisés, alors que `...LIKE 'abc%'` et `...LIKE 'abc_'` le sont). 
**Note**  
Le « `_` » (tiret du bas simple) est également traité comme un caractère générique.
+ Limitations propres aux agrégations :
  + Les fonctions d'agrégation peuvent accepter un seul argument ou une seule propriété.
  + Les fonctions d'agrégation ne peuvent pas accepter d'autres fonctions comme arguments.
  + `GROUP BY` avec une clause `ORDER BY` faisant référence à des fonctions d'agrégation ne peut contenir qu'une seule propriété.
  + Pour toutes les autres agrégations, les clauses `GROUP BY` peuvent contenir jusqu'à trois propriétés.
  + La pagination est prise en charge pour toutes les requêtes agrégées, sauf lorsque la clause `ORDER BY` comporte une fonction d'agrégation. Par exemple, `GROUP BY X, ORDER BY Y` ne fonctionne pas si `Y` est une fonction d'agrégation.
  + Pas de prise en charge des clauses `HAVING` dans les agrégations.
+ Limites des identifiants non concordants :

  Les identifiants non concordants sont des propriétés qui ont la même orthographe mais une casse différente (majuscules et minuscules). La requête avancée ne permet pas de traiter les requêtes qui contiennent des identifiants non concordants. Par exemple :
  + Deux propriétés qui ont exactement la même orthographe, mais une casse différente (`configuration.dbclusterIdentifier` et `configuration.dBClusterIdentifier`).
  + Deux propriétés où l'une est un sous-ensemble de l'autre et qui ont une casse différente (`configuration.ipAddress` et `configuration.ipaddressPermissions`).

## Comportement de la notation/IP plage CIDR pour les requêtes avancées
<a name="query-cidr-notation"></a>

La notation CIDR est convertie en plages d'adresses IP pour la recherche.

Cela signifie que `"="` et `"BETWEEN"` recherchent toute plage qui inclut l'adresse IP fournie, plutôt qu'une adresse exacte.

Pour rechercher une plage d'adresses IP exacte, vous devez ajouter des conditions supplémentaires à exclure IPs en dehors de cette plage.

**Example Recherche du bloc CIDR exact 10.0.0.0/24**  

```
SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup'
  AND configuration.ipPermissions.ipRanges BETWEEN '10.0.0.0'
  AND '10.0.0.255'
  AND NOT configuration.ipPermissions.ipRanges < '10.0.0.0'
  AND NOT configuration.ipPermissions.ipRanges > '10.0.0.255'
```

**Example Recherche de l'adresse IP exacte 192.168.0.2/32**  

```
SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup'
  AND configuration.ipPermissions.ipRanges = '192.168.0.2'
  AND NOT configuration.ipPermissions.ipRanges > '192.168.0.2'
  AND NOT configuration.ipPermissions.ipRanges < '192.168.0.2'
```

## Comportement de propriétés multiples au sein d'un tableau pour les requêtes avancées
<a name="array-property-query-behavior"></a>

Lorsque vous interrogez plusieurs propriétés au sein d'un tableau d'objets, les correspondances sont calculées par rapport à *tous les éléments du tableau*.

Par exemple, pour une ressource R avec des règles A et B, la ressource est conforme à la règle A, mais non conforme à la règle B. La ressource R est stockée sous la forme suivante :

```
{ 
    configRuleList: [ 
        {
            configRuleName: 'A', complianceType: 'compliant'
        }, 
        {   
            configRuleName: 'B', complianceType: 'non_compliant'
        } 
    ]
}
```

R sera renvoyée par cette requête :

```
SELECT configuration WHERE configuration.configRuleList.complianceType = 'non_compliant' 
AND configuration.configRuleList.configRuleName = 'A'
```

La première condition `configuration.configRuleList.complianceType = 'non_compliant'` est appliquée à TOUS les éléments de R.configRuleList, étant donné que R possède une règle (règle B) avec ComplianceType = 'non\$1compliant', la condition est évaluée comme vraie.

La deuxième condition `configuration.configRuleList.configRuleName` est appliquée à TOUS les éléments de R.configRuleList, car R possède une règle (règle A) avec configRuleName = « A », la condition est évaluée comme vraie. Comme les deux conditions sont vraies, R sera renvoyée.

## Prise en charge de la région
<a name="query-regionsupport"></a>

Les requêtes avancées sont prises en charge dans les régions suivantes :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/config/latest/developerguide/querying-AWS-resources.html)