

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.

# Exemples de requêtes de CloudTrail journal
<a name="query-examples-cloudtrail-logs"></a>

L'exemple suivant montre une partie d'une requête qui renvoie toutes les demandes anonymes (non signées) provenant de la table créée pour les journaux d' CloudTrail événements. Cette requête sélectionne ces demandes où `useridentity.accountid` est anonyme et `useridentity.arn` n'est pas spécifié :

```
SELECT *
FROM cloudtrail_logs
WHERE 
    eventsource = 's3.amazonaws.com' AND 
    eventname in ('GetObject') AND 
    useridentity.accountid = 'anonymous' AND 
    useridentity.arn IS NULL AND
    requestparameters LIKE '%[your bucket name ]%';
```

Pour plus d'informations, consultez le billet de blog consacré au AWS Big Data [Analysez la sécurité, la conformité AWS CloudTrail et l'activité opérationnelle à l'aide d'Amazon Athena](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/).

## Interrogez les champs imbriqués dans les journaux CloudTrail
<a name="cloudtrail-logs-nested-fields"></a>

Les champs `userIdentity` et `resources` étant des types de données imbriqués, leur interrogation nécessite un traitement particulier.

L'objet `userIdentity` est constitué de types `STRUCT` imbriqués. Il est possible de les interroger en utilisant un point pour séparer les champs, comme dans l'exemple suivant :

```
SELECT 
    eventsource, 
    eventname,
    useridentity.sessioncontext.attributes.creationdate,
    useridentity.sessioncontext.sessionissuer.arn
FROM cloudtrail_logs
WHERE useridentity.sessioncontext.sessionissuer.arn IS NOT NULL
ORDER BY eventsource, eventname
LIMIT 10
```

Le champ `resources` est un tableau d'objets `STRUCT`. Pour ces tableaux, utilisez `CROSS JOIN UNNEST` pour désimbriquer le tableau afin de pouvoir interroger ses objets.

L'exemple suivant renvoie toutes les lignes où l'ARN de la ressource se termine par `example/datafile.txt`. Pour des raisons de lisibilité, la fonction [replace](https://prestodb.io/docs/current/functions/string.html#replace) (remplacer) supprime la sous-chaîne `arn:aws:s3:::` initiale de l'ARN.

```
SELECT 
    awsregion,
    replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource,
    eventname,
    eventtime,
    useragent
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE unnested.resources_entry.ARN LIKE '%example/datafile.txt'
ORDER BY eventtime
```

L'exemple suivant interroge les événements `DeleteBucket`. La requête extrait de l'objet `resources` le nom du compartiment et l'ID du compte auquel le compartiment appartient.

```
SELECT 
    awsregion,
    replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as deleted_bucket,
    eventtime AS time_deleted,
    useridentity.username, 
    unnested.resources_entry.accountid as bucket_acct_id 
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE eventname = 'DeleteBucket'
ORDER BY eventtime
```

Pour plus d'informations sur la désimbrication, voir [Filtrage des tableaux](filtering-arrays.md).

## Conseils pour interroger CloudTrail les journaux
<a name="tips-for-querying-cloudtrail-logs"></a>

Tenez compte des points suivants lorsque vous explorez les données du CloudTrail journal :
+ Avant d'exécuter des requêtes sur ces journaux, vérifiez que votre table de journaux ressemble à celle dans [Création d'une table pour les CloudTrail journaux dans Athena à l'aide du partitionnement manuel](create-cloudtrail-table.md). Si ce n'est pas la première table, supprimez la table existante à l'aide de la commande suivante : `DROP TABLE cloudtrail_logs`.
+ Une fois que vous la table existante supprimée recréez-la. Pour de plus amples informations, veuillez consulter [Création d'une table pour les CloudTrail journaux dans Athena à l'aide du partitionnement manuel](create-cloudtrail-table.md).

  Vérifiez que les champs figurant dans votre requête Athena sont répertoriés correctement. Pour plus d'informations sur la liste complète des champs d'un CloudTrail enregistrement, consultez la section [Contenu de l'CloudTrail enregistrement](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html). 

  Si votre requête inclut des champs dans des formats JSON, par exemple `STRUCT`, extrayez les données depuis JSON. Pour de plus amples informations, veuillez consulter [Extraction de données JSON à partir de chaînes](extracting-data-from-JSON.md). 

  Quelques suggestions pour envoyer des requêtes sur votre CloudTrail table :
+ Commencez par examiner quels utilisateurs ont appelé les différentes opérations d'API et à partir de quelles adresses IP sources.
+ Utilisez la requête SQL de base suivante dans votre modèle. Collez la requête dans la console Athena et exécutez-la.

  ```
  SELECT
   useridentity.arn,
   eventname,
   sourceipaddress,
   eventtime
  FROM cloudtrail_logs
  LIMIT 100;
  ```
+ Modifiez la requête pour explorer davantage vos données.
+ Pour améliorer les performances, insérez la clause `LIMIT` pour renvoyer un sous-ensemble spécifié de lignes.