

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.

# CloudTrail Requêtes sur le lac
<a name="cloudtrail-lake-queries"></a>

**Note**  
AWS CloudTrail Lake ne sera plus ouvert aux nouveaux clients à compter du 31 mai 2026. Si vous souhaitez utiliser CloudTrail Lake, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour de plus amples informations, veuillez consulter [CloudTrail Modification de la disponibilité des lacs](cloudtrail-lake-service-availability-change.md).

Les requêtes dans CloudTrail Lake sont créées en SQL. Vous pouvez créer une requête dans l'onglet CloudTrail Lake **Editor** en écrivant la requête en SQL à partir de zéro, en ouvrant une requête enregistrée ou un exemple de requête et en la modifiant, ou en utilisant le générateur de requêtes pour produire une requête à partir d'une invite en anglais. Vous ne pouvez pas remplacer un exemple de requête inclus par vos modifications, mais vous pouvez l'enregistrer en tant que nouvelle requête. Pour plus d'informations sur le langage de requête SQL autorisé, consultez [CloudTrail Contraintes SQL du lac](query-limitations.md).

Une requête sans limite (telle que `SELECT * FROM edsID`) analyse toutes les données de votre magasin de données d'événement. Pour aider à contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des horodatages `eventTime` de début et de fin aux requêtes. L’exemple suivant montre comment rechercher tous les événements dans un magasin de données d’événement spécifié où l’heure de l’événement est postérieure au (`>`) 5 janvier 2023 à 13 h 51 et antérieure au (`<`) 19 janvier 2023 à 13 h 51. Étant donné qu’un magasin de données d’événement comporte une période de conservation minimale de sept jours, la durée minimale entre les valeurs de début et de fin `eventTime` est également de sept jours.

```
SELECT *
FROM eds-ID
WHERE
     eventtime >='2023-01-05 13:51:00' and eventtime < ='2023-01-19 13:51:00'
```

Pour plus d'informations sur la manière d'optimiser vos requêtes, consultez[Optimisez les requêtes CloudTrail Lake](lake-queries-optimization.md).

**Topics**
+ [Outils d'éditeur de requête](#query-editor-format-controls)
+ [Créez des requêtes CloudTrail Lake à partir d'instructions en langage naturel](lake-query-generator.md)
+ [Afficher des exemples de requêtes avec la CloudTrail console](lake-console-queries.md)
+ [Création ou modification d'une requête à l'aide de la CloudTrail console](query-create-edit-query.md)
+ [Exécuter une requête et enregistrer les résultats de la requête avec la console](query-run-query.md)
+ [Afficher les résultats des requêtes à l'aide de la console](query-results.md)
+ [Résumez les résultats des requêtes en langage naturel](query-results-summary.md)
+ [Téléchargement des résultats enregistrés d’une requête](view-download-cloudtrail-lake-query-results.md)
+ [Valider les résultats de requête enregistrés par CloudTrail Lake](cloudtrail-query-results-validation.md)
+ [Optimisez les requêtes CloudTrail Lake](lake-queries-optimization.md)
+ [Exécutez et gérez les requêtes CloudTrail Lake à l'aide du AWS CLI](lake-queries-cli.md)

## Outils d'éditeur de requête
<a name="query-editor-format-controls"></a>

Une barre d'outils située en haut à droite de l'éditeur de requêtes propose des commandes permettant de créer et de formater votre requête SQL.

![\[Barre d'outils Éditeur de requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-editor-toolbar.png)


Les sections suivantes décrivent les commandes de la barre d’outils.
+ **Undo** (Annuler) : rétablit la dernière modification de contenu effectuée dans l'éditeur de requêtes.
+ **Redo** (Rétablir) : répète la dernière modification de contenu effectuée dans l'éditeur de requêtes.
+ **Format sélectionné** : organise le contenu de l’éditeur de requêtes selon les conventions de mise en forme et d’espacement SQL.
+ **Commenter/décommenter la sélection** : commente la partie sélectionnée de la requête si elle n'est pas déjà commentée. Si la partie sélectionnée est déjà commentée, le choix de cette option supprime le commentaire.

# Créez des requêtes CloudTrail Lake à partir d'instructions en langage naturel
<a name="lake-query-generator"></a>

Vous pouvez utiliser le générateur de requêtes CloudTrail Lake pour produire une requête à partir d'une invite en anglais que vous fournissez. Le générateur de requêtes utilise l'intelligence artificielle générative (IA générative) pour produire une requête ready-to-use SQL à partir de votre invite, que vous pouvez ensuite choisir d'exécuter dans l'éditeur de requêtes de Lake ou de peaufiner davantage. Il n'est pas nécessaire de posséder une connaissance approfondie du SQL ou des champs d' CloudTrail événements pour utiliser le générateur de requêtes.

L'invite peut être une question ou une déclaration concernant les données d'événements de votre banque de données d'événements CloudTrail Lake. Par exemple, vous pouvez saisir des messages tels "What are my top errors in the past month?" que et “Give me a list of users that used SNS.”

Une invite peut comporter un minimum de 3 caractères et un maximum de 500 caractères.

La génération de requêtes est gratuite ; toutefois, lorsque vous exécutez des requêtes, vous devez payer des frais en fonction de la quantité de données optimisées et compressées numérisées. Pour mieux contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des `eventTime` horodatages de début et de fin aux requêtes.

**Note**  
Vous pouvez fournir des commentaires sur une requête générée en cliquant sur le bouton pouce vers le haut ou pouce bas qui apparaît sous la requête générée. Lorsque vous fournissez des commentaires, CloudTrail enregistre votre invite et la requête générée.  
N'incluez aucune information d'identification personnelle, confidentielle ou sensible dans vos invites.  
Cette fonctionnalité utilise de grands modèles de langage basés sur l'IA générative (LLMs) ; nous vous recommandons de vérifier la réponse LLM.

**Note**  
CloudTrail sélectionnera automatiquement la région optimale au sein de votre zone géographique pour traiter les demandes d'inférence lors de la génération de requêtes. Cela permet d'optimiser les ressources informatiques disponibles, la disponibilité des modèles et d'offrir la meilleure expérience client. Vos données resteront stockées uniquement dans la région d'origine de la demande. Toutefois, les demandes de saisie et les résultats de sortie peuvent être traités en dehors de cette région. Toutes les données seront transmises chiffrées sur le réseau sécurisé d’Amazon.  
 CloudTrail acheminera en toute sécurité vos demandes d'inférence vers les ressources informatiques disponibles dans la zone géographique d'origine de la demande, comme suit :   
Les demandes d'inférence provenant des États-Unis seront traitées aux États-Unis
Les demandes d'inférence provenant du Japon seront traitées au Japon
Les demandes d'inférence provenant de l'Australie seront traitées en Australie.
Les demandes d'inférence provenant de l'Union européenne seront traitées au sein de l'Union européenne
Les demandes d'inférence provenant de l'Inde seront traitées en Inde
 Pour désactiver la fonctionnalité de génération de requêtes, vous pouvez explicitement refuser ou supprimer l'`cloudtrail:GenerateQuery`action de la politique iam que vous utilisez. 

Vous pouvez accéder au générateur de requêtes à l'aide de la CloudTrail console et AWS CLI.

------
#### [ CloudTrail console ]

**Pour utiliser le générateur de requêtes sur la CloudTrail console**

1. Connectez-vous à la CloudTrail console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dans le panneau de navigation, sous **Lake**, choisissez **Requête**. 

1. Sur la page **Requête**, choisissez l'onglet **Editeur**.

1. Choisissez le magasin de données d'événements pour lequel vous souhaitez créer une requête.

1. Dans la zone du **générateur de requêtes**, entrez une invite en anglais simple. Pour obtenir des exemples, consultez [Exemples d’invites](#lake-query-generator-examples).

1. Choisissez **Générer une requête**. Le générateur de requêtes tentera de générer une requête à partir de votre invite. En cas de succès, le générateur de requêtes fournit la requête SQL dans l'éditeur. Si l'invite échoue, reformulez-la et réessayez.

1. (Facultatif) Vous pouvez fournir des commentaires sur la requête générée. Pour envoyer des commentaires, cliquez sur le bouton pouce vers le haut ou pouce bas qui apparaît sous l'invite. Lorsque vous fournissez des commentaires, CloudTrail enregistre votre invite et la requête générée.

1. (Facultatif) Choisissez **Exécuter** pour exécuter la requête.
**Note**  
Lorsque vous exécutez des requêtes, des frais sont facturés en fonction de la quantité de données optimisées et compressées numérisées. Pour mieux contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des `eventTime` horodatages de début et de fin aux requêtes.

1. (Facultatif) Si vous exécutez la requête et que vous obtenez des résultats, vous pouvez choisir **Résumer les résultats** pour générer un résumé en langage naturel en anglais des résultats de la requête. Cette option utilise l'intelligence artificielle générative (IA générative) pour produire le résumé. Pour plus d’informations sur cette option, consultez [Résumez les résultats des requêtes en langage naturel](query-results-summary.md).

   Vous pouvez fournir des commentaires sur le résumé en cliquant sur le bouton pouce vers le haut ou pouce bas qui apparaît sous le résumé généré.
**Note**  
La fonctionnalité de synthèse des requêtes est en version préliminaire pour CloudTrail Lake et est sujette à modification. Cette fonctionnalité est disponible dans les régions suivantes : Asie-Pacifique (Tokyo), USA Est (Virginie du Nord) et USA Ouest (Oregon).

------
#### [ AWS CLI ]

**Pour générer une requête à l'aide du AWS CLI**

Exécutez la `generate-query` commande pour générer une requête à partir d'une invite en anglais. Pour`--event-data-stores`, indiquez l'ARN (ou le suffixe d'ID de l'ARN) du magasin de données d'événements que vous souhaitez interroger. Vous ne pouvez spécifier qu'un seul magasin de données d'événements. Pour`--prompt`, fournissez l'invite en anglais. 

```
aws cloudtrail generate-query 
--event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \
--prompt "Show me all console login events for the past week?"
```

En cas de succès, la commande génère une instruction SQL et fournit une instruction `QueryAlias` que vous utiliserez avec la `start-query` commande pour exécuter la requête dans votre banque de données d'événements.

```
{
  "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'",
  "QueryAlias": "AWSCloudTrail-UUID"
}
```

**Pour exécuter une requête à l'aide du AWS CLI**

Exécutez la `start-query` commande avec le `QueryAlias` résultat généré par la `generate-query` commande de l'exemple précédent. Vous avez également la possibilité d'exécuter la `start-query` commande en fournissant le`QueryStatement`.

```
aws cloudtrail start-query --query-alias AWSCloudTrail-UUID
```

La réponse est une chaîne `QueryId`. Pour obtenir le statut d'une requête, exécutez `describe-query` en utilisant la valeur `QueryId` renvoyée par `start-query`. Si la requête est réussie, vous pouvez exécuter `get-query-results` pour obtenir des résultats.

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE"
}
```

**Note**  
Les requêtes qui s’exécutent pendant plus d’une heure peuvent prendre fin. Vous pouvez toujours obtenir des résultats partiels traités avant l’échéance de la requête.  
Si vous transmettez les résultats de la requête à un compartiment S3 à l'aide du `--delivery-s3uri` paramètre facultatif, la politique du compartiment doit CloudTrail autoriser la livraison des résultats de la requête au compartiment. Pour en savoir plus sur la modification manuelle de la politique de compartiment, consultez [Politique relative aux compartiments Amazon S3 pour les résultats des requêtes CloudTrail Lake](s3-bucket-policy-lake-query-results.md).

------

## Autorisations requises
<a name="lake-query-generator-permissions."></a>

Les politiques [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)gérées [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)et les politiques administrées fournissent toutes deux les autorisations nécessaires pour utiliser cette fonctionnalité.

Vous pouvez également inclure l’action `cloudtrail:GenerateQuery` dans une politique en ligne ou gérée par le client, qu’elle soit nouvelle ou existante.

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

Cette fonctionnalité est prise en charge dans les pays suivants Régions AWS :
+ Région Asie-Pacifique (Mumbai) (ap-south-1)
+ Région Asie-Pacifique (Sydney) (ap-southeast-2)
+ Région Asie-Pacifique (Tokyo) (ap-northeast-1)
+ Région Canada (Centre) (ca-central-1)
+ Région Europe (Londres) (eu-west-2)
+ Région USA Est (Virginie du Nord) (us-east-1)
+ Région USA Ouest (Oregon) (us-west-2)

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

Les limites du générateur de requêtes sont les suivantes :
+ Le générateur de requêtes ne peut accepter que les demandes en anglais.
+ Le générateur de requêtes peut uniquement générer des requêtes pour les magasins de données d'événements qui collectent des CloudTrail événements (événements de gestion, événements de données, événements d'activité réseau).
+ Le générateur de requêtes ne peut pas générer de requêtes pour des invites qui ne concernent pas les données d'événements de CloudTrail Lake.

## Exemples d’invites
<a name="lake-query-generator-examples"></a>

Cette section fournit des exemples d'invite et les requêtes SQL générées à partir de ces invites.

Si vous choisissez d'exécuter les exemples de requêtes présentés dans cette section, remplacez-les *eds-id* par l'ID du magasin de données d'événements que vous souhaitez interroger et remplacez les horodatages par les horodatages appropriés à votre cas d'utilisation. Les horodatages ont le format suivant :. `YYYY-MM-DD HH:MM:SS`

**Invite** : What are my top errors in the past month?

**Requête SQL :**

```
SELECT
    errorMessage,
    COUNT(*) as eventCount
FROM
    eds-id
WHERE
    errorMessage IS NOT NULL
AND eventTime >= timestamp '2024-05-01 00:00:00'
AND eventTime <= timestamp '2024-05-31 23:59:59'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 2;
```

**Invite** : Give me a list of users that used Amazon SNS.

**Requête SQL :**

```
SELECT
    DISTINCT userIdentity.arn AS user
FROM
    eds-id
WHERE
    eventSource = 'sns.amazonaws.com'
```

**Invite** : What are my API counts each day for read and write events in the past month?

**Requête SQL :**

```
SELECT date(eventTime) AS event_date,
    SUM(
        CASE
            WHEN readonly = true THEN 1
            ELSE 0
        END
    ) AS read_events,
    SUM(
        CASE
            WHEN readonly = false THEN 1
            ELSE 0
        END
    ) AS write_events
FROM
    eds-id
WHERE
    eventTime >= timestamp '2024-05-04 00:00:00'
AND eventTime <= timestamp '2024-06-04 23:59:59'
GROUP BY 1
ORDER BY 1 ASC;
```

**Invite** : Show any events with access denied errors for the past three weeks.

**Requête SQL :**

```
SELECT *
FROM 
  eds-id
WHERE
  WHERE (errorCode = 'AccessDenied' OR errorMessage = 'Access Denied')
AND eventTime >= timestamp '2024-05-16 01:00:00'
AND eventTime <= timestamp '2024-06-06 01:00:00'
```

**Invite** : Query the number of calls each operator performed on the date *2024-05-01*. The operator is a principal tag.

**Requête SQL :**

```
SELECT element_at(
        eventContext.tagContext.principalTags,
        'operator'
    ) AS operator,
    COUNT(*) AS eventCount
FROM
    eds-id
WHERE eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
GROUP BY 1
ORDER BY 2 DESC;
```

**Invite** : Give me all event IDs that touched resources within the CloudFormation stack with name *myStack* on the date *2024-05-01*.

**Requête SQL :**

```
SELECT eventID
FROM
    eds-id
WHERE any_match(
        eventContext.tagcontext.resourcetags,
        rt->element_at(rt.tags, 'aws:cloudformation:stack-name') = 'myStack'
    )
    AND eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
```

**Invite** : Count the number of events grouped by resource tag '*solution*' values, listing them in descending order of count.

**Requête SQL :**

```
SELECT element_at(rt.tags, 'solution'),
    count(*) as event_count
FROM
    eds-id,
    unnest(eventContext.tagContext.resourceTags) as rt
WHERE eventtime < '2025-05-14 19:00:00'
GROUP BY 1
ORDER BY 2 DESC;
```

**Invite** : Find all Amazon S3 data events where resource tag Environment has value *prod*.

**Requête SQL :**

```
SELECT *
FROM
    eds-id
WHERE eventCategory = 'Data'
    AND eventSource = 's3.amazonaws.com'
    AND eventtime >= '2025-05-14 00:00:00'
    AND eventtime < '2025-05-14 20:00:00'
    AND any_match(
        eventContext.tagContext.resourceTags,
        rt->element_at(rt.tags, 'Environment') = 'prod'
    )
```

# Afficher des exemples de requêtes avec la CloudTrail console
<a name="lake-console-queries"></a>

La CloudTrail console fournit un certain nombre d'exemples de requêtes qui peuvent vous aider à commencer à écrire vos propres requêtes.

CloudTrail les requêtes sont facturées en fonction de la quantité de données numérisées. Pour aider à contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des horodatages `eventTime` de début et de fin aux requêtes. Pour plus d'informations sur la CloudTrail tarification, consultez la section [AWS CloudTrail Tarification](https://aws.amazon.com/cloudtrail/pricing/).

**Note**  
Vous pouvez également consulter les requêtes créées par la GitHub communauté. Pour plus d'informations, consultez les [exemples de requêtes CloudTrail Lake](https://github.com/aws-samples/cloud-trail-lake-query-samples) sur le GitHub site Web. AWS CloudTrail n'a pas évalué les requêtes dans GitHub. 

**Pour afficher et exécuter un exemple de requête**

1. Connectez-vous à la CloudTrail console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dans le panneau de navigation, sous **Lake**, choisissez **Requête**. 

1. Sur la page **Requête**, sélectionnez l’onglet **Exemples de requêtes**.

1. Choisissez un exemple de requête dans la liste ou entrez une phrase à rechercher. Dans cet exemple, nous allons ouvrir la requête **Investigate who made console changes** en choisissant le **Nom de la requête**. Cela ouvre la requête dans l’onglet **Éditeur**.
**Note**  
Par défaut, cette page utilise les fonctionnalités de recherche de base. Vous pouvez améliorer la fonctionnalité de recherche en ajoutant des autorisations pour l'`cloudtrail:SearchSampleQueries`action, si cela n'est pas déjà prévu par votre politique d'autorisation. La politique [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)gérée fournit les autorisations nécessaires pour effectuer l'`cloudtrail:SearchSampleQueries`action.  
![\[Onglet Exemples de requêtes\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-sample-console.png)

1. Dans l'onglet **Éditeur**, choisissez l'entrepôt de données d'événement pour lequel vous souhaitez exécuter la requête. Lorsque vous choisissez le magasin de données d'événements dans la liste, l'ID du magasin de données d'événements est CloudTrail automatiquement renseigné dans la `FROM` ligne de l'éditeur de requêtes.  
![\[Choisir l'entrepôt de données d'événement pour la requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-editor-console.png)

1. Choisissez **Exécuter** pour exécuter la requête.

   L'onglet **Sortie de commande** affiche les métadonnées relatives à votre requête, telles que le succès de la requête, le nombre d'enregistrements correspondants et la durée d'exécution de la requête.  
![\[Afficher le statut de la requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-console-status.png)

   L'onglet **Résultats de la requête** affiche les données d'événements de l'entrepôt de données d'événement sélectionné qui correspondent à votre requête.  
![\[Afficher les résultats des requêtes\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-console-results.png)

Pour plus d'informations sur l'édition d'une requête, veuillez consulter [Création ou modification d'une requête à l'aide de la CloudTrail console](query-create-edit-query.md). Pour plus d'informations sur l'exécution d'une requête et l'enregistrement des résultats, veuillez consulter [Exécuter une requête et enregistrer les résultats de la requête avec la console](query-run-query.md).

# Création ou modification d'une requête à l'aide de la CloudTrail console
<a name="query-create-edit-query"></a>

Dans cette procédure guidée, nous ouvrons l’un des exemples de requêtes, puis nous le modifions pour trouver les actions entreprises par un utilisateur spécifique nommé `Alice`, et nous l’enregistrons comme une nouvelle requête. Vous pouvez également modifier une requête enregistrée sur l’onglet **Requêtes enregistrées**, si vous avez enregistré des requêtes. Pour aider à contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des horodatages `eventTime` de début et de fin aux requêtes.

1. Connectez-vous à la CloudTrail console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dans le panneau de navigation, sous **Lake**, choisissez **Requête**. 

1. Sur la page **Requête**, sélectionnez l’onglet **Exemples de requêtes**.

1. Ouvrez un exemple de requête en choisissant le **nom de la requête**. Cela ouvre la requête dans l’onglet **Éditeur**. Dans cet exemple, nous allons sélectionner la requête intitulée **Investigate user actions** et modifier la requête pour trouver les actions d'un utilisateur spécifique nommé `Alice`.

1. Dans l'onglet **Éditeur**, modifiez la ligne `WHERE` pour spécifier l'utilisateur que vous souhaitez étudier et mettez à jour les valeurs `eventTime` selon les besoins. La valeur de `FROM` est la partie ID de l'ARN du magasin de données d'événements et est automatiquement renseignée CloudTrail lorsque vous choisissez le magasin de données d'événements.

   ```
   SELECT
       eventID, eventName, eventSource, eventTime, userIdentity.arn AS user
   FROM
       event-data-store-id
   WHERE
       userIdentity.arn LIKE '%Alice%'
       AND eventTime > '2023-06-23 00:00:00' AND eventTime < '2023-06-26 00:00:00'
   ```

1. Vous pouvez exécuter une requête avant de l’enregistrer, pour vérifier que la requête fonctionne. Pour exécuter une requête, choisissez un magasin de données d'événement dans la liste déroulante **Event data store** (Magasin de données d'événement), puis choisissez **Run** (Exécuter). Affichez la colonne **Statut** de l’onglet **Sortie de la commande** pour la requête active afin de vérifier qu’une requête s’est exécutée correctement.

1. Lorsque vous avez mis à jour l'exemple de requête, choisissez **Enregistrer**.

1. Dans **Enregistrer la requête**, saisissez un nom et une description pour la requête. Choisissez **Save query** (Enregistrer la requête) pour enregistrer vos modifications en tant que nouvelle requête. Pour ignorer les modifications apportées à une requête, choisissez **Cancel** (Annuler) ou fermez la fenêtre **Save query** (Enregistrer la requête).  
![\[Enregistrement d'une requête modifiée\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-save.png)
**Note**  
Les requêtes enregistrées sont liées à votre navigateur ; si vous utilisez un autre navigateur ou un autre appareil pour accéder à la CloudTrail console, les requêtes enregistrées ne sont pas disponibles.

1. Ouvrez l'onglet **Saved queries** (Requêtes enregistrées) pour voir la nouvelle requête dans la table.  
![\[onglet Requêtes enregistrées affichant la nouvelle requête enregistrée\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-saved-table.png)

# Exécuter une requête et enregistrer les résultats de la requête avec la console
<a name="query-run-query"></a>

Après avoir choisi ou enregistré une requête, vous pouvez l'exécuter sur un magasin de données d'événement. 

 Lorsque vous exécutez une requête, vous avez la possibilité d'enregistrer les résultats de la requête dans un compartiment Amazon S3. Lorsque vous exécutez des requêtes dans CloudTrail Lake, des frais sont facturés en fonction de la quantité de données numérisées par la requête. Aucun frais CloudTrail Lake supplémentaire n'est facturé pour l'enregistrement des résultats des requêtes dans un compartiment S3, mais des frais de stockage S3 sont facturés. Pour de plus amples informations sur la tarification S3, veuillez consulter [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/). 

 Lorsque vous enregistrez des résultats de requête, ils peuvent s'afficher dans la CloudTrail console avant d'être visibles dans le compartiment S3, car ils sont fournis CloudTrail une fois l'analyse des requêtes terminée. Bien que la plupart des requêtes soient traitées en quelques minutes, selon la taille de votre banque de données d'événements, la transmission des résultats des requêtes CloudTrail à votre compartiment S3 peut prendre beaucoup plus de temps. CloudTrail fournit les résultats de la requête au compartiment S3 au format gzip compressé. En moyenne, une fois l'analyse de la requête terminée, vous pouvez vous attendre à une latence de 60 à 90 secondes pour chaque Go de données envoyé vers le compartiment S3.

**Pour exécuter une requête à l'aide de CloudTrail Lake**

1. Connectez-vous à la CloudTrail console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dans le panneau de navigation, sous **Lake**, choisissez **Requête**. 

1. Dans les onglets **Requêtes enregistrées** ou **Exemples de requêtes**, choisissez une requête à exécuter en choisissant le **nom de la requête**. 

1. Dans l’onglet **Éditeur**, pour **Magasin de données d’événement**, choisissez un magasin de données d’événement dans la liste déroulante.

1. (Facultatif) Dans l'onglet **Editor** (Éditeur), choisissez **Save results to S3** (Enregistrer les résultats dans S3) pour enregistrer les résultats de la requête dans un compartiment S3. Lorsque vous choisissez le compartiment S3 par défaut, il CloudTrail crée et applique les politiques de compartiment requises. Si vous choisissez le compartiment S3 par défaut, votre politique IAM doit inclure une autorisation pour l'`s3:PutEncryptionConfiguration`action, car le chiffrement côté serveur est activé par défaut pour le compartiment. Pour plus d'informations sur l'enregistrement des résultats d'une requête, consultez [Informations supplémentaires sur les résultats enregistrés d'une requête](#save-query-results). 
**Note**  
 Pour utiliser un compartiment différent, indiquez un nom de compartiment ou choisissez **Browse S3** (Parcourir S3) pour sélectionner un compartiment. La politique du compartiment doit accorder CloudTrail l'autorisation de fournir les résultats de la requête au compartiment. Pour en savoir plus sur la modification manuelle de la politique de compartiment, consultez [Politique relative aux compartiments Amazon S3 pour les résultats des requêtes CloudTrail Lake](s3-bucket-policy-lake-query-results.md). 

1. Dans l’onglet **Éditeur**, choisissez **Exécuter**.

   Selon la taille de votre magasin de données d'événement et le nombre de jours de données qu'il inclut, l'exécution d'une requête peut prendre plusieurs minutes. L'onglet **Command output** (Sortie de la commande) affiche l'état d'une requête, et indique si l'exécution d'une requête est terminée. Lorsque l’exécution d’une requête est terminée, ouvrez l’onglet **Résultats des requêtes** pour afficher un tableau des résultats de la requête active (la requête actuellement affichée dans l’éditeur).

**Note**  
Les requêtes qui s'exécutent pendant plus d'une heure peuvent prendre fin. Vous pouvez toujours obtenir des résultats partiels qui ont été traités avant l'expiration du délai imparti pour la requête. CloudTrail ne fournit pas de résultats de requête partiels à un compartiment S3. Pour éviter un dépassement de délai, vous pouvez affiner votre requête pour limiter la quantité de données analysées en spécifiant une plage de temps plus étroite.

## Informations supplémentaires sur les résultats enregistrés d'une requête
<a name="save-query-results"></a>

Après avoir enregistré les résultats d'une requête, vous pouvez les télécharger depuis le compartiment S3. Pour plus d'informations sur la recherche et le téléchargement des résultats enregistrés d'une requête, consultez [Téléchargement des résultats enregistrés d’une requête](view-download-cloudtrail-lake-query-results.md).

Vous pouvez également valider les résultats de requête enregistrés pour déterminer s'ils ont été modifiés, supprimés ou CloudTrail inchangés après leur réception. Pour plus d'informations sur la validation des résultats enregistrés d'une requête, consultez [Valider les résultats de requête enregistrés par CloudTrail Lake](cloudtrail-query-results-validation.md).

## Exemple : enregistrer les résultats d'une requête dans un compartiment Amazon S3
<a name="scenario-lake-save-queries"></a>

Cette procédure pas à pas montre comment enregistrer les résultats d'une requête dans un compartiment S3, puis comment les télécharger.

**Pour enregistrer les résultats d'une requête dans un compartiment Amazon S3**

1. Connectez-vous à la CloudTrail console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dans le panneau de navigation, sous **Lake**, choisissez **Requête**. 

1. Dans les onglets **Requêtes enregistrées** ou **Exemples de requêtes**, choisissez une requête à exécuter en choisissant la valeur dans la colonne **SQL de la requête**. Dans cet exemple, nous allons choisir l'exemple de requête intitulé **Investigate user actions**.

1. Dans l’onglet **Éditeur**, pour **Magasin de données d’événement**, choisissez un magasin de données d’événement dans la liste déroulante. Lorsque vous choisissez le magasin de données d'événements dans la liste, l'ID du magasin de données d'événements est CloudTrail automatiquement renseigné dans la `From` ligne.

1. Dans cet exemple de requête, nous allons modifier la valeur `userIdentity.ARN` pour spécifier un utilisateur nommé `Admin`, et nous allons conserver les valeurs par défaut pour `eventTime`. Lorsque vous exécutez une requête, la quantité de données analysées vous est facturée. Pour aider à contrôler les coûts, nous vous recommandons de limiter les requêtes en ajoutant des horodatages `eventTime` de début et de fin aux requêtes.  
![\[Modifier la valeur userIdentity.ARN dans un exemple de requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/sample-query-edit.png)

1. Choisissez **Enregistrer les résultats dans S3** pour enregistrer les résultats de la requête dans un compartiment S3. Lorsque vous choisissez le compartiment S3 par défaut, il CloudTrail crée et applique les politiques de compartiment requises. Si vous choisissez le compartiment S3 par défaut, votre politique IAM doit inclure une autorisation pour l'`s3:PutEncryptionConfiguration`action, car le chiffrement côté serveur est activé par défaut pour le compartiment. Dans cet exemple, nous utiliserons le compartiment S3 par défaut.
**Note**  
 Pour utiliser un compartiment différent, indiquez un nom de compartiment ou choisissez **Parcourir S3** pour sélectionner un compartiment. La politique du compartiment doit accorder CloudTrail l'autorisation de fournir les résultats de la requête au compartiment. Pour en savoir plus sur la modification manuelle de la politique de compartiment, consultez [Politique relative aux compartiments Amazon S3 pour les résultats des requêtes CloudTrail Lake](s3-bucket-policy-lake-query-results.md).   
![\[Compartiment S3 sélectionné pour les résultats de requête enregistrés.\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/save-query-results.png)

1. Cliquez sur **Exécuter**. Selon la taille de votre magasin de données d’événement et le nombre de jours de données qu’il inclut, l’exécution d’une requête peut prendre plusieurs minutes. L'onglet **Command output** (Sortie de la commande) affiche l'état d'une requête, et indique si l'exécution d'une requête est terminée. Lorsque l’exécution d’une requête est terminée, ouvrez l’onglet **Résultats des requêtes** pour afficher un tableau des résultats de la requête active (la requête actuellement affichée dans l’éditeur).

1. Lorsque la livraison des résultats de requête enregistrés à votre compartiment S3 est CloudTrail terminée, la colonne **État de livraison** fournit un lien vers le compartiment S3 qui contient vos fichiers de résultats de requête enregistrés ainsi qu'un [fichier de signature](cloudtrail-query-results-validation.md#cloudtrail-results-file-validation-sign-file-structure) que vous pouvez utiliser pour vérifier les résultats de vos requêtes enregistrés. Choisissez **Afficher dans S3** pour afficher les fichiers de résultats de la requête et les fichiers de signature dans le compartiment S3.
**Note**  
 Lorsque vous enregistrez des résultats de requête, ils peuvent s'afficher dans la CloudTrail console avant d'être visibles dans le compartiment S3, car ils sont fournis CloudTrail une fois l'analyse des requêtes terminée. Bien que la plupart des requêtes soient traitées en quelques minutes, selon la taille de votre banque de données d'événements, la transmission des résultats des requêtes CloudTrail à votre compartiment S3 peut prendre beaucoup plus de temps. CloudTrail fournit les résultats de la requête au compartiment S3 au format gzip compressé. En moyenne, une fois l'analyse de la requête terminée, vous pouvez vous attendre à une latence de 60 à 90 secondes pour chaque Go de données envoyé vers le compartiment S3.  
![\[Statut de la réception de la requête dans l'onglet Sortie de commande\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/query-delivery-status.png)

1. Pour télécharger les résultats de votre requête, choisissez le fichier de résultats de la requête (en l’occurrence `result_1.csv.gz`), puis choisissez **Télécharger**.  
![\[Télécharger un fichier de résultats de requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/download-query-results.png)

Pour plus d'informations sur la validation des résultats enregistrés d'une requête, veuillez consulter [Valider les résultats de requête enregistrés par CloudTrail Lake](cloudtrail-query-results-validation.md).

# Afficher les résultats des requêtes à l'aide de la console
<a name="query-results"></a>

Une fois votre requête terminée, vous pouvez afficher ses résultats. Les résultats d’une requête sont disponibles pendant sept jours après la fin de la requête. Vous pouvez afficher les résultats de la requête active sur l'onglet **Query results** (Résultats des requêtes), ou vous pouvez accéder aux résultats de toutes les requêtes récentes sur l'onglet **Result history** (Historique des résultats) sur la page d'accueil **Lake**.

Les résultats de la requête peuvent passer des exécutions plus anciennes d’une requête à des exécutions plus récentes, car les événements ultérieurs de la période de requête peuvent être journalisés entre les requêtes.

Lorsque vous enregistrez des résultats de requête, ils peuvent s'afficher dans la CloudTrail console avant d'être visibles dans le compartiment S3, car ils sont fournis CloudTrail une fois l'analyse des requêtes terminée. Bien que la plupart des requêtes soient traitées en quelques minutes, selon la taille de votre banque de données d'événements, la transmission des résultats des requêtes CloudTrail à votre compartiment S3 peut prendre beaucoup plus de temps. CloudTrail fournit les résultats de la requête au compartiment S3 au format gzip compressé. En moyenne, une fois l'analyse des requêtes terminée, vous pouvez vous attendre à une latence de 60 à 90 secondes pour chaque Go de données transmis au compartiment S3. Pour plus d’informations sur la recherche et le téléchargement des résultats enregistrés d’une requête, consultez [Téléchargement des résultats enregistrés d’une requête](view-download-cloudtrail-lake-query-results.md).

**Note**  
Les requêtes qui s’exécutent pendant plus d’une heure peuvent prendre fin. Vous pouvez toujours obtenir des résultats partiels qui ont été traités avant l'expiration du délai imparti pour la requête. CloudTrail ne fournit pas de résultats de requête partiels à un compartiment S3. Pour éviter un dépassement de délai, vous pouvez affiner votre requête pour limiter la quantité de données analysées en spécifiant une plage de temps plus étroite.

**Pour afficher les résultats d'une requête**

1. Choisissez l'onglet **Résultats** de la requête dans l'éditeur de requêtes s'il n'est pas déjà sélectionné. Dans l’onglet **Résultats des requêtes** pour une requête active, chaque ligne représente un résultat d’événement correspondant à la requête. Filtrez les résultats en saisissant tout ou partie d’une valeur de champ d’événement dans la barre de recherche. Pour copier un événement, choisissez l'événement que vous souhaitez copier, puis choisissez **Copier**.

1. (Facultatif) Choisissez **Résumer les résultats** pour générer un résumé en langage naturel des résultats de la requête. Le résumé est fourni en anglais. Cette option utilise l'intelligence artificielle générative (IA générative) pour produire le résumé. Pour plus d’informations sur cette option, consultez [Résumez les résultats des requêtes en langage naturel](query-results-summary.md).

   Vous pouvez fournir des commentaires sur le résumé en cliquant sur le bouton pouce vers le haut ou pouce bas qui apparaît sous le résumé généré.
**Note**  
La fonctionnalité de synthèse des requêtes est en version préliminaire pour CloudTrail Lake et est sujette à modification. Cette fonctionnalité est disponible dans les régions suivantes : Asie-Pacifique (Tokyo), USA Est (Virginie du Nord) et USA Ouest (Oregon).

1. Dans l’onglet **Sortie de la commande**, affichez les métadonnées relatives à la requête exécutée, telles que l’ID du magasin de données d’événement, la durée d’exécution, le nombre de résultats analysés et si la requête a réussi ou non. Si vous avez enregistré les résultats d'une requête dans un compartiment Amazon S3, les métadonnées incluent également un lien vers le compartiment S3 contenant les résultats enregistrés de la requête.

# Résumez les résultats des requêtes en langage naturel
<a name="query-results-summary"></a>

**Note**  
La fonctionnalité de synthèse des requêtes est en version préliminaire pour CloudTrail Lake et est sujette à modification.

**Note**  
CloudTrail sélectionnera automatiquement la région optimale au sein de votre zone géographique pour traiter les demandes d'inférence tout en résumant les requêtes. Cela permet d'optimiser les ressources informatiques disponibles, la disponibilité des modèles et d'offrir la meilleure expérience client. Vos données resteront stockées uniquement dans la région d'origine de la demande. Toutefois, les demandes de saisie et les résultats de sortie peuvent être traités en dehors de cette région. Toutes les données seront transmises chiffrées sur le réseau sécurisé d’Amazon.  
 CloudTrail acheminera en toute sécurité vos demandes d'inférence vers les ressources informatiques disponibles dans la zone géographique d'origine de la demande, comme suit :   
Les demandes d'inférence provenant des États-Unis seront traitées aux États-Unis
Les demandes d'inférence provenant du Japon seront traitées au Japon
 Pour désactiver la fonctionnalité de synthèse des requêtes, vous pouvez explicitement refuser ou supprimer l'`cloudtrail:GenerateQueryResultsSummary`action de la politique iam que vous utilisez. 

Une fois votre requête terminée, vous pouvez obtenir un résumé des résultats de votre requête en langage naturel dans l'onglet **Résultats de la requête** de l'éditeur de requêtes. Cette option utilise l'intelligence artificielle générative (IA générative) pour produire le résumé.

**Pour résumer les résultats d'une requête**

1. Dans l'onglet **Résultats de la requête** de l'éditeur de requêtes, choisissez **Synthétiser les résultats** pour générer un résumé en langage naturel des résultats de la requête. Le résumé est fourni en anglais.

1. (Facultatif) Fournissez des commentaires sur le résumé en cliquant sur le bouton pouce vers le haut ou pouce bas qui apparaît sous le résumé généré.

Si le magasin de données d'événements associé est chiffré à l'aide d'une clé KMS, vous ne pouvez pas utiliser la clé KMS pour chiffrer les résultats et le résumé de la requête. Les résultats et le résumé de la requête sont plutôt chiffrés par CloudTrail.

L'accès au résumé généré est autorisé conformément aux autorisations`GetQueryResults`,`GenerateQueryResultsSummary`, et KMS (si le magasin de dates des événements associé est chiffré à l'aide d'une clé KMS). Lorsqu'un résumé est généré, CloudTrail enregistre un événement nommé en fonction `GenerateQueryResultsSummary` de sa visibilité.

## Autorisations requises
<a name="query-results-summary-permissions."></a>

Les politiques [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)gérées [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)et les politiques administrées fournissent toutes deux les autorisations nécessaires pour utiliser cette fonctionnalité.

Vous pouvez également inclure les `cloudtrail:GetQueryResults` actions `cloudtrail:GenerateQueryResultsSummary` et dans une politique en ligne ou gérée par le client, nouvelle ou existante.

Si le magasin de données d'événements associé aux résultats de requête résumés est chiffré à l'aide d'une clé KMS, vous devez également disposer d'autorisations pour la clé KMS.

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

Cette fonctionnalité est disponible dans les versions suivantes Régions AWS :
+ Région Asie-Pacifique (Tokyo) (ap-northeast-1)
+ Région USA Est (Virginie du Nord) (us-east-1)
+ Région USA Ouest (Oregon) (us-west-2)

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

Les limites de cette fonctionnalité sont les suivantes :
+ Les résumés sont en anglais uniquement.
+ Les résumés sont limités aux magasins de données d'événements qui collectent des CloudTrail événements (événements de gestion, événements de données, événements d'activité réseau).
+ Chaque résumé concerne les résultats d'une seule requête.
+ La taille des résultats de la requête doit être inférieure à 250 Ko.
+ Le quota mensuel de résultats de requêtes pouvant être résumés est de 3 Mo.

# Téléchargement des résultats enregistrés d’une requête
<a name="view-download-cloudtrail-lake-query-results"></a>

Après avoir enregistré les résultats de la requête, vous devez être en mesure de localiser le fichier contenant les résultats de la requête. CloudTrail fournit les résultats de votre requête à un compartiment Amazon S3 que vous spécifiez lorsque vous enregistrez les résultats de la requête. 

**Note**  
 Lorsque vous enregistrez des résultats de requête, ils peuvent s'afficher dans la console avant d'être visibles dans le compartiment S3, car ils sont fournis CloudTrail une fois l'analyse des requêtes terminée. Bien que la plupart des requêtes soient traitées en quelques minutes, selon la taille de votre banque de données d'événements, la transmission des résultats des requêtes CloudTrail à votre compartiment S3 peut prendre beaucoup plus de temps. CloudTrail fournit les résultats de la requête au compartiment S3 au format gzip compressé. En moyenne, une fois l'analyse de la requête terminée, vous pouvez vous attendre à une latence de 60 à 90 secondes pour chaque Go de données envoyé vers le compartiment S3. 

**Topics**
+ [Trouvez les résultats de vos requêtes enregistrés sur CloudTrail Lake](#cloudtrail-find-lake-query-results)
+ [Téléchargez les résultats de vos requêtes enregistrés sur CloudTrail Lake](#cloudtrail-download-lake-query-results)

## Trouvez les résultats de vos requêtes enregistrés sur CloudTrail Lake
<a name="cloudtrail-find-lake-query-results"></a>

CloudTrail publie les résultats de la requête et les fichiers de signature dans votre compartiment S3. Le fichier de résultat d'une requête contient la sortie de la requête enregistrée. Le fichier de signature fournit la signature et la valeur de hachage des résultats de la requête. Vous pouvez utiliser le fichier de signature pour valider les résultats de la requête. Pour plus d'informations sur la validation des résultats d'une requête, consultez [Valider les résultats de requête enregistrés par CloudTrail Lake](cloudtrail-query-results-validation.md).

Pour récupérer le résultat d'une requête ou le fichier de signature, vous pouvez utiliser la console Amazon S3, l'interface de la ligne de commande (CLI) Amazon S3 ou l'API. 

**Pour trouver les résultats de votre requête et les fichiers de signature avec la console Amazon S3**

1. Ouvrez la console Amazon S3.

1. Choisissez le compartiment que vous avez spécifié.

1. Parcourez la hiérarchie des objets jusqu'à ce que vous trouviez les fichiers de résultat de la requête et les fichiers de signature. Le fichier de résultat d'une requête a une extension .csv.gz et le fichier de signature a une extension .json.

Vous allez parcourir une hiérarchie d'objets similaire à l'exemple suivant, mais avec un nom de compartiment, un ID de compte, une date et un ID de requête différents. 

```
All Buckets
    amzn-s3-demo-bucket
        AWSLogs
            Account_ID;
                CloudTrail-Lake
                    Query
                        2022
                            06
                              20
                                Query_ID
```

## Téléchargez les résultats de vos requêtes enregistrés sur CloudTrail Lake
<a name="cloudtrail-download-lake-query-results"></a>

Lorsque vous enregistrez les résultats d'une requête CloudTrail , deux types de fichiers sont envoyés dans votre compartiment Amazon S3.
+ Un fichier de signature au format JSON que vous pouvez utiliser pour valider les fichiers de résultats de la requête. Le fichier de signature est nommé result\$1sign.json. Pour plus d'informations sur le fichier de signature, consultez [CloudTrail structure du fichier de signes](cloudtrail-query-results-validation.md#cloudtrail-results-file-validation-sign-file-structure).
+ Un ou plusieurs fichiers de résultat au format CSV, qui contiennent les résultats de la requête. Le nombre de fichiers de résultat envoyés dépend de la taille totale des résultats de la requête. La taille maximale d'un fichier de résultat d'une requête est de 1 To. Chaque fichier de résultats de requête est nommé result\$1 *number* .csv.gz. Par exemple, si la taille totale des résultats d'une requête était de 2 To, vous auriez deux fichiers de résultat, result\$11.csv.gz et result\$12.csv.gz.

 CloudTrail les fichiers de résultat et de signature de la requête sont des objets Amazon S3. Vous pouvez utiliser la console S3, la AWS Command Line Interface (CLI) ou l'API S3 pour récupérer les résultats des requêtes et signer les fichiers. 

 La procédure suivante décrit comment télécharger les fichiers de résultat d'une requête et les fichiers de signature avec la console Amazon S3. 

**Pour télécharger le résultat de votre requête ou le fichier de signature avec la console Amazon S3**

1. Ouvrez la console Amazon S3.

1. Choisissez le compartiment et le fichier que vous voulez télécharger.  
![\[CloudTrail fichier de résultats de requête\]](http://docs.aws.amazon.com/fr_fr/awscloudtrail/latest/userguide/images/lake_query_results_S3.png)

1. Choisissez **Download** (Télécharger) et suivez toutes les instructions pour enregistrer le fichier.
**Note**  
Certains navigateurs, tels que Chrome, extraient automatiquement le fichier de résultat de la requête pour vous. Si c'est le cas pour votre navigateur, passez directement à l'étape 5.

1. Utilisez un outil comme [7-Zip](https://www.7-zip.org/) pour extraire le fichier de résultat de la requête.

1. Ouvrez le fichier de résultat de la requête ou le fichier de signature.

# Valider les résultats de requête enregistrés par CloudTrail Lake
<a name="cloudtrail-query-results-validation"></a>

Pour déterminer si les résultats de la requête ont été modifiés, supprimés ou inchangés après CloudTrail leur réception, vous pouvez utiliser la validation de l'intégrité des résultats de CloudTrail requête. Cette fonctionnalité est créée grâce à des algorithmes standard du secteur : SHA-256 pour le hachage et SHA-256 avec RSA pour la signature numérique. Il est donc impossible, sur le plan informatique, de modifier, de supprimer ou de falsifier des fichiers de résultats de CloudTrail requêtes sans détection. Vous pouvez utiliser la ligne de commande pour valider les fichiers de résultat d'une requête. 

## Pourquoi l'utiliser ?
<a name="cloudtrail-query-results-validation-use-cases"></a>

Les fichiers de résultat d'une requête validés s'avèrent utiles lors d'enquêtes de sécurité et légales. Par exemple, un fichier de résultat d'une requête validé vous permet d'affirmer de manière positive que le fichier lui-même n'a pas été modifié. Le processus de validation de l'intégrité du fichier de résultats de CloudTrail requête vous permet également de savoir si un fichier de résultats de requête a été supprimé ou modifié. 

**Topics**
+ [Pourquoi l'utiliser ?](#cloudtrail-query-results-validation-use-cases)
+ [Validez les résultats de requête enregistrés à l'aide du AWS CLI](#cloudtrail-query-results-validation-cli)
+ [CloudTrail structure du fichier de signes](#cloudtrail-results-file-validation-sign-file-structure)
+ [Implémentations personnalisées de la validation de l'intégrité des fichiers de résultats de CloudTrail requêtes](#cloudtrail-results-file-custom-validation)

## Validez les résultats de requête enregistrés à l'aide du AWS CLI
<a name="cloudtrail-query-results-validation-cli"></a>

Vous pouvez valider l'intégrité des fichiers de résultat d'une requête et du fichier de signature à l'aide de la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudtrail/verify-query-results.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudtrail/verify-query-results.html).

### Conditions préalables
<a name="cloudtrail-query-results-validation-cli-prerequisites"></a>

Pour valider l'intégrité des résultats d'une requête à l'aide de la ligne de commande, les conditions suivantes doivent être remplies :
+ Vous devez disposer d'une connexion en ligne pour AWS.
+ Vous devez utiliser AWS CLI la version 2.
+ Pour valider les fichiers de résultats d'une requête et le fichier de signature localement, les conditions suivantes s'appliquent :
  + Vous devez placer les fichiers de résultats d'une requête et le fichier de signature dans le chemin d'accès spécifié. Indiquez le chemin d'accès au fichier comme valeur du paramètre **--local-export-path**.
  + Ne renommez ni les fichiers de résultats d'une requête, ni le fichier de signature.
+ Pour valider les fichiers de résultats d'une requête et le fichier de signature dans le compartiment S3, les conditions suivantes s'appliquent :
  + Ne renommez ni les fichiers de résultats d'une requête, ni le fichier de signature.
  + Vous devez disposer d'un accès en lecture au compartiment Amazon S3 qui contient les fichiers de résultat d'une requête et le fichier de signature.
  + Le préfixe S3 spécifié doit contenir les fichiers de résultats d'une requête et le fichier de signature. Spécifiez le préfixe S3 comme valeur du paramètre **--s3-prefix**.

### verify-query-results
<a name="cloudtrail-query-results-validation-cli-command"></a>

 La commande **verify-query-results** vérifie la valeur de hachage de chaque fichier de résultats d'une requête `fileHashValue` en la comparant à la valeur du fichier de signature, puis en validant `hashSignature` dans le fichier de signature. 

Lorsque vous vérifiez les résultats d'une requête, vous pouvez utiliser les options de ligne de commande **--s3-bucket** et **--s3-prefix** pour valider les fichiers de résultats d'une requête et le fichier de signature stockés dans un compartiment S3, ou vous pouvez utiliser l'option de ligne de commande **--local-export-path** pour effectuer une validation locale des fichiers de résultats d'une requête et du fichier de signature téléchargés.

**Note**  
La commande **verify-query-results** est spécifique à la région. Vous devez spécifier l'option **--region** globale pour valider les résultats d'une requête spécifique Région AWS.

Voici les options pour la commande **verify-query-results**.

**--s3-bucket** *<string>*  
Spécifie le nom du compartiment S3 qui stocke les fichiers de résultats d'une requête et le fichier de signature. Vous ne pouvez pas utiliser ce paramètre avec **--local-export-path**.

**--s3-prefix** *<string>*  
Spécifie le chemin S3 du dossier S3 qui contient les fichiers de résultats d'une requête et le fichier de signature (par exemple, `s3/path/`). Vous ne pouvez pas utiliser ce paramètre avec **--local-export-path**. Il n'est pas nécessaire de fournir ce paramètre si les fichiers se trouvent dans le répertoire racine du compartiment S3.

**--local-export-path** *<string>*  
Spécifie le répertoire local qui contient les fichiers de résultats d'une requête et le fichier de signature (par exemple, `/local/path/to/export/file/`). Vous ne pouvez pas utiliser ce paramètre avec **--s3-bucket** ou **--s3-prefix**.

#### Exemples
<a name="cloudtrail-query-results-validation-cli-examples"></a>

L'exemple suivant valide les résultats d'une requête à l'aide des options de ligne de commande **--s3-bucket** et **--s3-prefix** pour spécifier le nom du compartiment S3 et le préfixe contenant les fichiers de résultats d'une requête et le fichier de signature.

```
aws cloudtrail verify-query-results --s3-bucket amzn-s3-demo-bucket --s3-prefix prefix --region region
```

L'exemple suivant valide les résultats d'une requête téléchargés en utilisant l'option de ligne de commande **--local-export-path** pour spécifier le chemin local pour les fichiers de résultats d'une requête et le fichier de signature. Pour plus d'informations sur le téléchargement des résultats d'une requête, veuillez consulter [Téléchargez les résultats de vos requêtes enregistrés sur CloudTrail Lake](view-download-cloudtrail-lake-query-results.md#cloudtrail-download-lake-query-results).

```
aws cloudtrail verify-query-results --local-export-path local_file_path --region region
```

#### Résultats de la validation
<a name="cloudtrail-query-results-validation-cli-command-messages"></a>

Le tableau suivant décrit les messages de validation possibles pour les fichiers de résultats d'une requête et le fichier de signature.


****  

| Type de fichier | Message de validation | Description | 
| --- | --- | --- | 
| Sign file | Successfully validated sign and query result files | La signature du fichier de signature est valide. Les fichiers de résultats d'une requête auxquels il fait référence peuvent être vérifiés. | 
| Query result file |  `ValidationError: "File file_name has inconsistent hash value with hash value recorded in sign file, hash value in sign file is expected_hash, but get computed_hash`  | La validation a échoué, car la valeur de hachage du fichier de résultats d'une requête ne correspondait pas au fileHashValue dans le fichier de signature. | 
| Sign file |  `ValidationError: Invalid signature in sign file`  | La validation du fichier de signature a échoué, car la signature n'est pas valide. | 

## CloudTrail structure du fichier de signes
<a name="cloudtrail-results-file-validation-sign-file-structure"></a>

Le fichier de signature contient le nom de chaque fichier de résultat d'une requête qui a été envoyé à votre compartiment Amazon S3 lorsque vous avez enregistré les résultats d'une requête, la valeur de hachage de chaque fichier de résultat de la requête et la signature numérique du fichier. La signature numérique et les valeurs de hachage sont utilisées pour valider l'intégrité des fichiers de résultat de la requête et du fichier de signature lui-même. 

### Emplacement du fichier de signature
<a name="cloudtrail-results-file-validation-sign-file-location"></a>

Le fichier de signature est envoyé à un emplacement de compartiment Amazon S3 qui respecte cette syntaxe.

```
s3://amzn-s3-demo-bucket/optional-prefix/AWSLogs/aws-account-ID/CloudTrail-Lake/Query/year/month/date/query-ID/result_sign.json
```

### Exemple de contenu du fichier de signature
<a name="cloudtrail-results-file-validation-sign-file-contents"></a>

L'exemple de fichier de signes suivant contient des informations relatives aux résultats des requêtes CloudTrail Lake.

```
{
  "version": "1.0",
  "region": "us-east-1",
  "files": [
    {
      "fileHashValue" : "de85a48b8a363033c891abd723181243620a3af3b6505f0a44db77e147e9c188",
      "fileName" : "result_1.csv.gz"
    }
  ],
  "hashAlgorithm" : "SHA-256",
  "signatureAlgorithm" : "SHA256withRSA",
  "queryCompleteTime": "2022-05-10T22:06:30Z",
  "hashSignature" : "7664652aaf1d5a17a12ba50abe6aca77c0ec76264bdf7dce71ac6d1c7781117c2a412e5820bccf473b1361306dff648feae20083ad3a27c6118172a81635829bdc7f7b795ebfabeb5259423b2fb2daa7d1d02f55791efa403dac553171e7ce5f9307d13e92eeec505da41685b4102c71ec5f1089168dacde702c8d39fed2f25e9216be5c49769b9db51037cb70a84b5712e1dffb005a74580c7fdcbb89a16b9b7674e327de4f5414701a772773a4c98eb008cca34228e294169901c735221e34cc643ead34628aabf1ba2c32e0cdf28ef403e8fe3772499ac61e21b70802dfddded9bea0ddfc3a021bf2a0b209f312ccee5a43f2b06aa35cac34638f7611e5d7",
  "publicKeyFingerprint" : "67b9fa73676d86966b449dd677850753"
}
```

### Description des champs du fichier de signature
<a name="cloudtrail-results-file-validation-sign-file-descriptions"></a>

Voici la description de chaque champ du fichier de signature : 

`version`  
La version du fichier de signature. 

`region`  
Région du AWS compte utilisé pour enregistrer les résultats de la requête. 

`files.fileHashValue`  
La valeur de hachage codée en hexadécimal du contenu compressé du fichier de résultat de la requête.

`files.fileName`  
Le nom du fichier de resultat de la requête. 

`hashAlgorithm`  
L'algorithme de hachage utilisé pour hacher le fichier de résultat de la requête. 

`signatureAlgorithm`  
L'algorithme utilisé pour signer le fichier. 

`queryCompleteTime`  
Indique à CloudTrail quel moment les résultats de la requête ont été transmis au compartiment S3. Vous pouvez utiliser cette valeur pour trouver la clé publique.

`hashSignature`  
La signature de hachage du fichier.

`publicKeyFingerprint`  
L'empreinte digitale codée en hexadécimal de la clé publique utilisée pour signer le fichier.

## Implémentations personnalisées de la validation de l'intégrité des fichiers de résultats de CloudTrail requêtes
<a name="cloudtrail-results-file-custom-validation"></a>

Grâce à l' CloudTrail utilisation d'algorithmes cryptographiques et de fonctions de hachage conformes aux normes du secteur et librement disponibles, vous pouvez créer vos propres outils pour valider l'intégrité des fichiers de résultats des CloudTrail requêtes. Lorsque vous enregistrez les résultats d'une requête dans un compartiment Amazon S3, CloudTrail un fichier de signature est envoyé à votre compartiment S3. Vous pouvez mettre en œuvre votre propre solution de validation pour valider les fichiers de signature et les fichiers de résultats d'une requête. Pour plus d'informations sur le fichier de signature, consultez [CloudTrail structure du fichier de signes](#cloudtrail-results-file-validation-sign-file-structure). 

Cette rubrique décrit comment le fichier de signature est signé, puis détaille les étapes que vous devrez suivre pour mettre en œuvre une solution qui valide le fichier de signature et les fichiers de résultat d'une requête auxquels le fichier de signature fait référence. 

### Comprendre comment CloudTrail les fichiers de signature sont signés
<a name="cloudtrail-results-file-custom-validation-how-cloudtrail-sign-files-are-signed"></a>

CloudTrail les fichiers de signature sont signés avec des signatures numériques RSA. Pour chaque fichier de signes, CloudTrail effectue les opérations suivantes : 

1. Crée une liste de hachage qui contient la valeur de hachage de chaque fichier de résultat d'une requête.

1. Obtient une clé privée unique pour la région.

1. Transmet le hachage SHA-256 de la chaîne et la clé privée de l'algorithme de signature RSA, qui génèrent une signature numérique.

1. Code le code d'octet de la signature dans un format hexadécimal.

1. Ajoute la signature numérique dans le fichier de signature.

#### Contenu de la chaîne de signature des données
<a name="cloudtrail-results-file-custom-validation-data-signing-string-summary"></a>

La chaîne de signature des données est constituée de la valeur de hachage de chaque fichier de résultat d'une requête, séparés par un espace. Le fichier de signature énumère la valeur `fileHashValue` de chaque fichier de résultat d'une requête.

### Étapes d'implémentation de la validation personnalisée
<a name="cloudtrail-results-file-custom-validation-steps"></a>

Lors de la mise en œuvre d'une solution de validation personnalisée, vous devrez valider le fichier de signature et les fichiers de résultat d'une requête auxquels il fait référence. 

#### Validation du fichier de signature
<a name="cloudtrail-results-file-custom-validation-steps-sign"></a>

Pour valider un fichier de signature, vous avez besoin de sa signature, de la clé publique dont la clé privée a été utilisée pour le signer et d'une chaîne de signature de données que vous calculez. 

1. Obtenir le fichier de signature.

1. Vérifier que le fichier de signature a été récupéré depuis son emplacement d'origine. 

1. Obtenir la signature codée en hexadécimal du fichier de signature.

1. Obtenir l'empreinte digitale codée en hexadécimal de la clé publique dont la clé privée a été utilisée pour signer le fichier de signature.

1. Récupérer la clé publique pour la plage de temps correspondant à `queryCompleteTime` dans le fichier de signature. Pour la plage de temps, choisissez une `StartTime` antérieure à la `queryCompleteTime` et une `EndTime` postérieure à la `queryCompleteTime`.

1. Parmi les clés publiques récupérées, choisissez la clé publique dont l'empreinte digitale correspond à la valeur `publicKeyFingerprint` dans le fichier de signature.

1. À l'aide d'une liste de hachage contenant la valeur de hachage de chaque fichier de résultat d'une requête séparées par un espace, recréez la chaîne de signature des données utilisée pour vérifier la signature du fichier de signature. Le fichier de signature énumère la valeur `fileHashValue` de chaque fichier de résultat d'une requête.

   Par exemple, si le tableau `files` de votre fichier de signature contient les trois fichiers de résultat d'une requête suivants, votre liste de hachage est « aaa bbb ccc ».

   ```
   “files": [ 
      { 
           "fileHashValue" : “aaa”, 
           "fileName" : "result_1.csv.gz" 
      },
      {       
           "fileHashValue" : “bbb”,       
           "fileName" : "result_2.csv.gz"      
      },
      { 
           "fileHashValue" : “ccc”,       
           "fileName" : "result_3.csv.gz" 
      }
   ],
   ```

1. Valider la signature en transmettant le hachage SHA-256 de la chaîne, la clé publique et la signature comme paramètres de l'algorithme de vérification de signature RSA. Si le résultat est true, le fichier de signature est valide. 

#### Validation des fichiers de résultat d'une requête
<a name="cloudtrail-results-file-custom-validation-steps-logs"></a>

Si le fichier de signature est valide, validez les fichiers de résultat d'une requête auxquels le fichier de signature fait référence. Pour valider l'intégrité d'un fichier de résultat d'une requête, calculez sa valeur de hachage SHA-256 sur son contenu compressé et comparez les résultats avec la valeur `fileHashValue` du fichier de résultat d'une requête enregistrée dans le fichier de signature. Si les hachages correspondent, le fichier de résultat de la requête est valide.

Les sections suivantes décrivent en détail le processus de validation.

#### A. Obtenir le fichier de signature
<a name="cloudtrail-results-file-custom-validation-steps-get-the-sign-file"></a>

Les premières étapes consistent à obtenir le fichier de signature et l'empreinte digitale de la clé publique.

1. Obtenez le fichier de signature à partir de votre compartiment Amazon S3 pour les résultats de la requête que vous voulez valider. 

1. Ensuite, obtenez la valeur `hashSignature` à partir du fichier de signature.

1. Dans le fichier de signature, obtenez l'empreinte digitale de la clé publique dont la clé privée a été utilisée pour signer le fichier à partir du champ `publicKeyFingerprint`. 

#### B. Récupérer la clé publique pour valider le fichier de signature
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key"></a>

Pour obtenir la clé publique permettant de valider le fichier de signature, vous pouvez utiliser l'API AWS CLI ou l' CloudTrail API. Dans les deux cas, vous spécifiez une plage de temps (c'est-à-dire, une heure de début et une heure de fin) pour le fichier de signature que vous voulez valider. Utilisez une plage horaire correspondant à la `queryCompleteTime` dans le fichier de signature. Une ou plusieurs clés publiques peuvent être retournées pour l'intervalle de temps que vous spécifiez. Les clés renvoyées peuvent avoir des plages de temps de validité qui se chevauchent.

**Note**  
Comme il CloudTrail utilise différentes paires de private/public clés par région, chaque fichier de signes est signé avec une clé privée propre à sa région. Par conséquent, lorsque vous validez un fichier de signature à partir d'une région donnée, vous devez récupérer sa clé publique à partir de la même région.

##### Utilisez le AWS CLI pour récupérer les clés publiques
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key-cli"></a>

Pour récupérer une clé publique pour un fichier de signes à l'aide de AWS CLI, utilisez la `cloudtrail list-public-keys` commande. La commande a le format suivant : 

 `aws cloudtrail list-public-keys [--start-time <start-time>] [--end-time <end-time>]` 

Les paramètres d'heure de début et d'heure de fin sont des horodatages UTC facultatifs. S'ils ne sont pas spécifiés, l'heure actuelle est utilisée et la ou les clés publiques actives sont renvoyées.

 **Exemple de réponse** 

La réponse est une liste d'objets JSON représentant la (ou les) clé(s) renvoyées : 

##### Utiliser l' CloudTrail API pour récupérer les clés publiques
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key-api"></a>

Pour récupérer une clé publique pour un fichier de signes à l'aide de l' CloudTrail API, transmettez les valeurs d'heure de début et de fin à l'`ListPublicKeys`API. L'API `ListPublicKeys` renvoie les clés publiques dont les clés privées ont été utilisées pour signer le fichier dans la plage de temps spécifiée. Pour chaque clé publique, l'API renvoie également l'empreinte correspondante.

##### `ListPublicKeys`
<a name="cloudtrail-results-file-custom-validation-steps-list-public-keys"></a>

Cette section décrit les paramètres de demande et les éléments de réponse pour l'API `ListPublicKeys`.

**Note**  
L'encodage pour les champs binaires pour `ListPublicKeys` est susceptible d'être modifié. 

 **Paramètres de requête** 


****  

| Nom | Description | 
| --- | --- | 
|  StartTime  |  Spécifie éventuellement, en UTC, le début de la plage de temps pour rechercher la clé publique pour le fichier de CloudTrail signature. Si StartTime ce n'est pas spécifié, l'heure actuelle est utilisée et la clé publique actuelle est renvoyée.  Type : DateTime   | 
|  EndTime  |  Spécifie éventuellement, en UTC, la fin de la plage de temps pour rechercher les clés publiques pour les fichiers de CloudTrail signature. Si EndTime ce n'est pas spécifié, l'heure actuelle est utilisée.  Type : DateTime   | 

 **Éléments de réponse** 

`PublicKeyList`, un tableau des objets `PublicKey` qui contient les éléments suivants : 


****  

|  |  | 
| --- |--- |
|  Nom  |  Description  | 
|  Value  |  La valeur de clé publique codée DER au format PKCS \$11.  Type : Blob   | 
|  ValidityStartTime  |  Heure de début de validité de la clé publique. Type : DateTime   | 
|  ValidityEndTime  |  Heure de fin de validité de la clé publique. Type : DateTime   | 
|  Fingerprint  |  Empreinte de la clé publique. L'empreinte peut servir à identifier la clé publique que vous devez utiliser pour valider le fichier de signature. Type : Chaîne   | 

#### C. Sélectionner la clé publique à utiliser pour la validation
<a name="cloudtrail-results-file-custom-validation-steps-choose-public-key"></a>

Parmi les clés publiques récupérées par `list-public-keys` ou `ListPublicKeys`, sélectionnez la clé publique dont l'empreinte digitale correspond à l'empreinte digitale enregistrée dans le champ `publicKeyFingerprint` du fichier de signature. C'est la clé publique que vous utiliserez pour valider le fichier de signature. 

#### D. Recréer la chaîne de signature des données
<a name="cloudtrail-results-file-custom-validation-steps-recreate-data-signing-string"></a>

Maintenant que vous avez la signature du fichier de signature et la clé publique associée, vous devez calculer la chaîne de signature des données. Une fois que vous aurez calculé les chaîne de signature des données, vous aurez les entrées nécessaires pour vérifier la signature.

La chaîne de signature des données est constituée de la valeur de hachage de chaque fichier de résultat d'une requête, séparés par un espace. Une fois que vous avez recréé cette chaîne, vous pouvez valider le fichier de signature.

#### E. Validation du fichier de signature
<a name="cloudtrail-results-file-custom-validation-steps-validate-sign-file"></a>

Transmettez la chaîne de signature de données recréée, la signature numérique et la clé publique de l'algorithme de vérification de la signature RSA. Si le résultat est true, la signature du fichier de signature est vérifiée et le fichier de signature est valide. 

#### F. Validation des fichiers de résultat d'une requête
<a name="cloudtrail-results-file-custom-validation-steps-validate-log-files"></a>

Une fois que vous avez validé le fichier signature, vous pouvez valider les fichiers de résultat de la requête auxquels il fait référence. Le fichier de signature contient les hachages SHA-256 des fichiers de résultat d'une requête. Si l'un des fichiers de résultats de requête a été modifié après l'avoir CloudTrail livré, les hachages SHA-256 seront modifiés et la signature du fichier de signature ne correspondra pas. 

Utilisez la procédure suivante pour valider les fichiers de résultat d'une requête répertoriés dans le tableau `files` du fichier de signature.

1. Récupérez le hachage original du fichier dans le champ `files.fileHashValue` du fichier de signature.

1. Hachez le contenu compressé du fichier de résultat d'une requête avec l'algorithme de hachage spécifié dans `hashAlgorithm`.

1. Comparez la valeur de hachage que vous avez générée pour chaque fichier de résultat de la requête avec la valeur `files.fileHashValue` du fichier de signature. Si les hachages correspondent, les fichiers de résultat de la requête sont valides.

### Validation des fichiers de signature et de résultat d'une requête hors ligne
<a name="cloudtrail-results-file-custom-validation-offline"></a>

Lors de la validation des fichiers de signature et des fichiers de résultats d'une requête hors connexion, vous pouvez généralement suivre les procédures décrites dans les sections précédentes. Cependant, vous devez prendre en compte les informations suivantes concernant les clés publiques.

#### Clés publiques
<a name="cloudtrail-results-file-custom-validation-offline-public-keys"></a>

Pour effectuer une validation hors ligne, la clé publique dont vous avez besoin pour valider les fichiers de résultat d'une requête dans une plage de temps donnée doit d'abord être obtenue en ligne (en appelant `ListPublicKeys`, par exemple), puis stockée hors ligne. Cette étape doit être répétée chaque fois que vous souhaitez valider des fichiers supplémentaires en dehors de la plage de temps que vous avez spécifiée au départ.

### Extrait de code de validation
<a name="cloudtrail-results-file-custom-validation-sample-code"></a>

L'exemple d'extrait suivant fournit un code squelette pour valider les fichiers de résultats de CloudTrail signes et de requêtes. Le code squelette est online/offline agnostique, c'est-à-dire que c'est à vous de décider de l'implémenter avec ou sans connectivité en ligne pour AWS. L'implémentation suggéré utilise le [Java Cryptography Extension (JCE)](https://en.wikipedia.org/wiki/Java_Cryptography_Extension) et [Bouncy Castle](https://www.bouncycastle.org/) comme fournisseur de sécurité. 

L'exemple d'extrait de code montre :
+ Procédure de création de la chaîne de signature des données utilisée pour valider la signature du fichier de signature.
+ Procédure de vérification de la signature du fichier de signature.
+ Procédure de calcul de la valeur de hachage pour le fichier de résultat d'une requête et comparaison avec la valeur `fileHashValue` répertoriée dans le fichier de signature pour vérifier l'authenticité du fichier de résultat d'une requête.

```
import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.RSAPublicKey;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.json.JSONArray;
import org.json.JSONObject;
 
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
 
public class SignFileValidationSampleCode {
 
    public void validateSignFile(String s3Bucket, String s3PrefixPath) throws Exception {
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
 
        // Load the sign file from S3 (using Amazon S3 Client) or from your local copy
        JSONObject signFile = loadSignFileToMemory(s3Bucket, String.format("%s/%s", s3PrefixPath, "result_sign.json"));
 
        // Using the Bouncy Castle provider as a JCE security provider - http://www.bouncycastle.org/
        Security.addProvider(new BouncyCastleProvider());
 
        List<String> hashList = new ArrayList<>();
 
        JSONArray jsonArray = signFile.getJSONArray("files");
 
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject file = jsonArray.getJSONObject(i);
            String fileS3ObjectKey = String.format("%s/%s", s3PrefixPath, file.getString("fileName"));
 
            // Load the export file from S3 (using Amazon S3 Client) or from your local copy
            byte[] exportFileContent = loadCompressedExportFileInMemory(s3Bucket, fileS3ObjectKey);
            messageDigest.update(exportFileContent);
            byte[] exportFileHash = messageDigest.digest();
            messageDigest.reset();
            byte[] expectedHash = Hex.decodeHex(file.getString("fileHashValue"));
 
            boolean signaturesMatch = Arrays.equals(expectedHash, exportFileHash);
            if (!signaturesMatch) {
                System.err.println(String.format("Export file: %s/%s hash doesn't match.\tExpected: %s Actual: %s",
                        s3Bucket, fileS3ObjectKey,
                        Hex.encodeHexString(expectedHash), Hex.encodeHexString(exportFileHash)));
            } else {
                System.out.println(String.format("Export file: %s/%s hash match",
                        s3Bucket, fileS3ObjectKey));
            }
 
            hashList.add(file.getString("fileHashValue"));
        }
        String hashListString = hashList.stream().collect(Collectors.joining(" "));
 
        /*
            NOTE:
            To find the right public key to verify the signature, call CloudTrail ListPublicKey API to get a list
            of public keys, then match by the publicKeyFingerprint in the sign file. Also, the public key bytes
            returned from ListPublicKey API are DER encoded in PKCS#1 format:
 
            PublicKeyInfo ::= SEQUENCE {
                algorithm       AlgorithmIdentifier,
                PublicKey       BIT STRING
            }
 
            AlgorithmIdentifier ::= SEQUENCE {
                algorithm       OBJECT IDENTIFIER,
                parameters      ANY DEFINED BY algorithm OPTIONAL
            }
        */
        byte[] pkcs1PublicKeyBytes = getPublicKey(signFile.getString("queryCompleteTime"),
                signFile.getString("publicKeyFingerprint"));
        byte[] signatureContent = Hex.decodeHex(signFile.getString("hashSignature"));
 
        // Transform the PKCS#1 formatted public key to x.509 format.
        RSAPublicKey rsaPublicKey = RSAPublicKey.getInstance(pkcs1PublicKeyBytes);
        AlgorithmIdentifier rsaEncryption = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, null);
        SubjectPublicKeyInfo publicKeyInfo = new SubjectPublicKeyInfo(rsaEncryption, rsaPublicKey);
 
        // Create the PublicKey object needed for the signature validation
        PublicKey publicKey = KeyFactory.getInstance("RSA", "BC")
                .generatePublic(new X509EncodedKeySpec(publicKeyInfo.getEncoded()));
 
        // Verify signature
        Signature signature = Signature.getInstance("SHA256withRSA", "BC");
        signature.initVerify(publicKey);
        signature.update(hashListString.getBytes("UTF-8"));
 
        if (signature.verify(signatureContent)) {
            System.out.println("Sign file signature is valid.");
        } else {
            System.err.println("Sign file signature failed validation.");
        }
 
        System.out.println("Sign file validation completed.");
    }
}
```

# Optimisez les requêtes CloudTrail Lake
<a name="lake-queries-optimization"></a>

Cette page fournit des conseils sur la manière d'optimiser les requêtes CloudTrail Lake afin d'améliorer les performances et la fiabilité. Il couvre des techniques d'optimisation spécifiques ainsi que des solutions de contournement pour les échecs de requêtes courants.

**Topics**
+ [Recommandations pour optimiser les requêtes](#lake-queries-tuning)
+ [Solutions en cas d'échec des requêtes](#lake-queries-troubleshooting)

## Recommandations pour optimiser les requêtes
<a name="lake-queries-tuning"></a>

Suivez les recommandations de cette section pour optimiser vos requêtes.

**Topics**
+ [Optimisation des agrégations](#query-optimization-aggregation)
+ [Utiliser des techniques d'approximation](#query-optimization-approximation)
+ [Limiter les résultats des requêtes](#query-optimization-limit)
+ [Optimisez les requêtes LIKE](#query-optimization-like)
+ [Utilisez `UNION ALL` au lieu de `UNION`](#query-optimization-union)
+ [Inclure uniquement les colonnes obligatoires](#query-optimization-reqcolumns)
+ [Réduire la portée des fonctions de la fenêtre](#query-optimization-windows)

### Optimisation des agrégations
<a name="query-optimization-aggregation"></a>

L'exclusion des colonnes redondantes dans les `GROUP BY` clauses peut améliorer les performances, car un nombre réduit de colonnes nécessite moins de mémoire. Par exemple, dans la requête suivante, nous pouvons utiliser la `arbitrary` fonction sur une colonne redondante `eventType` pour améliorer les performances. La `arbitrary` fonction on `eventType` est utilisée pour sélectionner la valeur du champ de manière aléatoire dans le groupe car la valeur est la même et n'a pas besoin d'être incluse dans la `GROUP BY` clause.

```
SELECT eventName, eventSource, arbitrary(eventType), count(*) 
FROM $EDS_ID 
GROUP BY eventName, eventSource
```

Il est possible d'améliorer les performances de la `GROUP BY` fonction en ordonnant la liste des champs par ordre décroissant de leur nombre de valeurs uniques (cardinalité). `GROUP BY` Par exemple, lors de l'obtention du nombre d'événements d'un type dans chacun Région AWS, les performances peuvent être améliorées en utilisant l'`eventName``awsRegion`ordre dans la `GROUP BY` fonction au lieu de`awsRegion`, `eventName` car il y a `eventName` plus de valeurs uniques de que de`awsRegion`.

```
SELECT eventName, awsRegion, count(*) 
FROM $EDS_ID 
GROUP BY eventName, awsRegion
```

### Utiliser des techniques d'approximation
<a name="query-optimization-approximation"></a>

Lorsque des valeurs exactes ne sont pas nécessaires pour compter des valeurs distinctes, utilisez des [fonctions d'agrégation approximatives](https://trino.io/docs/current/functions/aggregate.html#approximate-aggregate-functions) pour trouver les valeurs les plus fréquentes. Par exemple, [https://trino.io/docs/current/functions/aggregate.html#approx_distinct](https://trino.io/docs/current/functions/aggregate.html#approx_distinct)utilise beaucoup moins de mémoire et s'exécute plus rapidement que l'`COUNT(DISTINCT fieldName)`opération.

### Limiter les résultats des requêtes
<a name="query-optimization-limit"></a>

Si seul un exemple de réponse est nécessaire pour une requête, limitez les résultats à un petit nombre de lignes en utilisant la `LIMIT` condition. Dans le cas contraire, la requête renverra des résultats volumineux et son exécution prendra plus de temps.

L'utilisation `LIMIT` avec `ORDER BY` permet d'obtenir des résultats plus rapidement pour les N premiers ou derniers enregistrements, car elle réduit la quantité de mémoire nécessaire et le temps nécessaire au tri.

```
SELECT * FROM $EDS_ID
ORDER BY eventTime 
LIMIT 100;
```

### Optimisez les requêtes LIKE
<a name="query-optimization-like"></a>

Vous pouvez utiliser `LIKE` pour trouver des chaînes correspondantes, mais avec de longues chaînes, cela demande beaucoup de calcul. La [https://trino.io/docs/current/functions/regexp.html#regexp_like](https://trino.io/docs/current/functions/regexp.html#regexp_like)fonction est dans la plupart des cas une alternative plus rapide.

Souvent, vous pouvez optimiser une recherche en ancrant la sous-chaîne que vous recherchez. Par exemple, si vous recherchez un préfixe, il est préférable d'utiliser « % » au lieu de « % `substr` % `substr` » avec l'`LIKE`opérateur et « ^ `substr` » avec la fonction. `regexp_like`

### Utilisez `UNION ALL` au lieu de `UNION`
<a name="query-optimization-union"></a>

`UNION ALL`et `UNION` sont deux manières de combiner les résultats de deux requêtes en un seul résultat tout en supprimant `UNION` les doublons. `UNION`doit traiter tous les enregistrements et trouver les doublons, ce qui demande beaucoup de mémoire et de calcul, mais `UNION ALL` c'est une opération relativement rapide. À moins que vous n'ayez besoin de dédupliquer des enregistrements, utilisez `UNION ALL` pour de meilleures performances.

### Inclure uniquement les colonnes obligatoires
<a name="query-optimization-reqcolumns"></a>

Si vous n'avez pas besoin d'une colonne, ne l'incluez pas dans votre requête. Moins une requête doit traiter de données, plus elle sera exécutée rapidement. Si vous avez des requêtes correspondant `SELECT *` à la requête la plus externe, vous devez les `*` remplacer par une liste de colonnes dont vous avez besoin.

La clause `ORDER BY` renvoie les résultats d'une requête dans un ordre trié. Lors du tri d'une plus grande quantité de données, si la mémoire requise n'est pas disponible, les résultats triés intermédiaires sont écrits sur le disque, ce qui peut ralentir l'exécution de la requête. Si vous n'avez pas strictement besoin que votre résultat soit trié, évitez d'ajouter une clause `ORDER BY`. Évitez également d'`ORDER BY`ajouter des requêtes internes si cela n'est pas strictement nécessaire. 

### Réduire la portée des fonctions de la fenêtre
<a name="query-optimization-windows"></a>

[Les fonctions de fenêtre](https://trino.io/docs/current/functions/window.html) conservent en mémoire tous les enregistrements sur lesquels elles opèrent afin de calculer leur résultat. Lorsque la fenêtre est très grande, la fonction de fenêtrage peut manquer de mémoire. Pour vous assurer que les requêtes s'exécutent dans les limites de mémoire disponible, réduisez la taille des fenêtres sur lesquelles vos fonctions de fenêtre opèrent en ajoutant une `PARTITION BY` clause.

Parfois, les requêtes comportant des fonctions de fenêtrage peuvent être réécrites sans fonctions de fenêtrage. Par exemple, au lieu d'utiliser `row_number` ou`rank`, vous pouvez utiliser des fonctions d'agrégation telles que [https://trino.io/docs/current/functions/aggregate.html#max_by](https://trino.io/docs/current/functions/aggregate.html#max_by)ou [https://trino.io/docs/current/functions/aggregate.html#min_by](https://trino.io/docs/current/functions/aggregate.html#min_by).

La requête suivante trouve le dernier alias attribué à chaque clé KMS à l'aide de`max_by`.

```
SELECT element_at(requestParameters, 'targetKeyId') as keyId, 
max_by(element_at(requestParameters, 'aliasName'), eventTime) as mostRecentAlias 
FROM $EDS_ID 
WHERE eventsource = 'kms.amazonaws.com' 
AND eventName in ('CreateAlias', 'UpdateAlias') 
AND eventTime > DATE_ADD('week', -1, CURRENT_TIMESTAMP) 
GROUP BY element_at(requestParameters, 'targetKeyId')
```

Dans ce cas, la `max_by` fonction renvoie l'alias de l'enregistrement indiquant l'heure du dernier événement au sein du groupe. Cette requête s'exécute plus rapidement et utilise moins de mémoire qu'une requête équivalente dotée d'une fonction de fenêtrage.

## Solutions en cas d'échec des requêtes
<a name="lake-queries-troubleshooting"></a>

Cette section propose des solutions aux échecs de requête courants.

**Topics**
+ [La requête échoue car la réponse est trop volumineuse](#large-responses)
+ [La requête échoue en raison de l'épuisement des ressources](#exhausted-resources)

### La requête échoue car la réponse est trop volumineuse
<a name="large-responses"></a>

Une requête peut échouer si la réponse est trop volumineuse, ce qui entraîne le message`Query response is too large`. Dans ce cas, vous pouvez réduire la portée de l'agrégation.

Les fonctions d'agrégation telles que celles-ci `array_agg` peuvent entraîner la très grande taille d'au moins une ligne de la réponse à la requête, ce qui entraîne l'échec de la requête. Par exemple, l'utilisation `array_agg(eventName)` au lieu de `array_agg(DISTINCT eventName)` augmentera considérablement la taille de la réponse en raison des noms d'événements dupliqués à partir des CloudTrail événements sélectionnés.

### La requête échoue en raison de l'épuisement des ressources
<a name="exhausted-resources"></a>

Si suffisamment de mémoire n'est pas disponible pendant l'exécution d'opérations gourmandes en mémoire telles que les jointures, les agrégations et les fonctions de fenêtre, les résultats intermédiaires sont répandus sur le disque, mais le déversement ralentit l'exécution des requêtes et peut être insuffisant pour empêcher l'échec de la requête. `Query exhausted resources at this scale factor` Cela peut être résolu en réessayant la requête.

Si les erreurs ci-dessus persistent même après l'optimisation de la requête, vous pouvez affiner la requête à l'aide `eventTime` des événements et exécuter la requête plusieurs fois à des intervalles plus courts par rapport à la plage de temps de la requête d'origine.

# Exécutez et gérez les requêtes CloudTrail Lake à l'aide du AWS CLI
<a name="lake-queries-cli"></a>

Vous pouvez utiliser le AWS CLI pour exécuter et gérer vos requêtes CloudTrail Lake. Lorsque vous utilisez le AWS CLI, n'oubliez pas que vos commandes s'exécutent dans la Région AWS configuration adaptée à votre profil. Si vous souhaitez exécuter les commandes dans une autre région, modifiez la région par défaut pour votre profil, ou utilisez le paramètre **--region** avec la commande.

## Commandes disponibles pour les requêtes CloudTrail Lake
<a name="lake-queries-cli-commands"></a>

Les commandes permettant d'exécuter et de gérer les requêtes dans CloudTrail Lake incluent :
+ `start-query`pour exécuter une requête.
+ `describe-query`pour renvoyer des métadonnées relatives à une requête.
+ `generate-query`pour produire une requête à partir d'une invite en anglais. Pour de plus amples informations, veuillez consulter [Créez des requêtes CloudTrail Lake à partir d'instructions en langage naturel](lake-query-generator.md).
+ `get-query-results`pour renvoyer les résultats de la requête pour l'ID de requête spécifié.
+ `list-queries`pour obtenir une liste de requêtes pour le magasin de données d'événements spécifié.
+ `cancel-query`pour annuler une requête en cours d'exécution.

Pour obtenir la liste des commandes disponibles pour les magasins de données d'événements CloudTrail Lake, consultez[Commandes disponibles pour les magasins de données d'événements](lake-eds-cli.md#lake-eds-cli-commands).

Pour obtenir la liste des commandes disponibles pour les tableaux de bord CloudTrail Lake, consultez[Commandes disponibles pour les tableaux de bord](lake-dashboard-cli.md#lake-dashboard-cli-commands).

Pour obtenir la liste des commandes disponibles pour les intégrations de CloudTrail Lake, consultez[Commandes disponibles pour les intégrations de CloudTrail Lake](lake-integrations-cli.md#lake-integrations-cli-commands).

## Produisez une requête à partir d'une invite en langage naturel à l'aide du AWS CLI
<a name="lake-cli-generate-query"></a>

Exécutez la `generate-query` commande pour générer une requête à partir d'une invite en anglais. Pour`--event-data-stores`, indiquez l'ARN (ou le suffixe d'ID de l'ARN) du magasin de données d'événements que vous souhaitez interroger. Vous ne pouvez spécifier qu'un seul magasin de données d'événements. Pour`--prompt`, fournissez l'invite en anglais.

```
aws cloudtrail generate-query 
--event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \
--prompt "Show me all console login events for the past week?"
```

En cas de succès, la commande génère une instruction SQL et fournit une instruction `QueryAlias` que vous utiliserez avec la `start-query` commande pour exécuter la requête dans votre banque de données d'événements.

```
{
  "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'",
  "QueryAlias": "AWSCloudTrail-UUID"
}
```

## Lancez une requête avec AWS CLI
<a name="lake-cli-start-query"></a>

L'exemple de AWS CLI **start-query** commande suivant exécute une requête sur le magasin de données d'événements spécifié sous forme d'ID dans l'instruction de requête et fournit les résultats de la requête à un compartiment S3 spécifié. Le paramètre `--query-statement` fournit une requête SQL, entre guillemets simples. Les paramètres facultatifs incluent `--delivery-s3-uri`, pour envoyer les résultats d’une requête à un compartiment S3 spécifié. Pour plus d'informations sur le langage de requête que vous pouvez utiliser dans CloudTrail Lake, consultez[CloudTrail Contraintes SQL du lac](query-limitations.md).

```
aws cloudtrail start-query
--query-statement 'SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10'
--delivery-s3-uri "s3://aws-cloudtrail-lake-query-results-123456789012-us-east-1"
```

La réponse est une chaîne `QueryId`. Pour obtenir le statut d'une requête, exécutez **describe-query** en utilisant la valeur `QueryId` renvoyée par **start-query**. Si la requête est réussie, vous pouvez exécuter **get-query-results** pour obtenir des résultats.

**Sortie**

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE"
}
```

**Note**  
Les requêtes qui s'exécutent pendant plus d'une heure peuvent prendre fin. Vous pouvez toujours obtenir des résultats partiels traités avant l’échéance de la requête.  
Si vous transmettez les résultats de la requête à un compartiment S3 à l'aide du `--delivery-s3-uri` paramètre facultatif, la politique du compartiment doit CloudTrail autoriser la livraison des résultats de la requête au compartiment. Pour en savoir plus sur la modification manuelle de la politique de compartiment, consultez [Politique relative aux compartiments Amazon S3 pour les résultats des requêtes CloudTrail Lake](s3-bucket-policy-lake-query-results.md).

## Obtenez les métadonnées relatives à une requête à l'aide du AWS CLI
<a name="lake-cli-describe-query"></a>

L'exemple de AWS CLI **describe-query** commande suivant permet d'obtenir les métadonnées relatives à une requête, notamment le temps d'exécution de la requête en millisecondes, le nombre d'événements analysés et mis en correspondance, le nombre total d'octets analysés et le statut de la requête. La valeur `BytesScanned` correspond au nombre d’octets pour lesquels votre compte est facturé pour la requête, sauf si la requête est toujours en cours d’exécution. Si les résultats de la requête ont été transmis à un compartiment S3, la réponse fournit également l'URI S3 et le statut de livraison.

Vous devez spécifier une valeur pour le paramètre `--query-id` ou pour le paramètre `--query-alias`. La spécification du paramètre `--query-alias` renvoie des informations sur la dernière requête exécutée pour l'alias. 

```
aws cloudtrail describe-query --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

Voici un exemple de réponse.

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
    "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", 
    "QueryStatus": "RUNNING",
    "QueryStatistics": {
        "EventsMatched": 10,
        "EventsScanned": 1000,
        "BytesScanned": 35059,
        "ExecutionTimeInMillis": 3821,
        "CreationTime": "1598911142"
    }
}
```

## Obtenez les résultats de vos requêtes à l'aide du AWS CLI
<a name="lake-cli-get-query-results"></a>

L'exemple de commande AWS CLI **get-query-results** suivant montre comment obtenir les résultats des données d'événement d'une requête. Vous devez spécifier le `--query-id` renvoyé par la commande **start-query**. La valeur `BytesScanned` correspond au nombre d'octets pour lesquels votre compte est facturé pour la requête, sauf si la requête est toujours en cours d'exécution. Les paramètres facultatifs incluent `--max-query-results`, pour spécifier un nombre maximal de résultats que la commande doit renvoyer sur une seule page. S'il y a plus de résultats que la valeur `--max-query-results` spécifiée, exécutez à nouveau la commande en ajoutant la valeur `NextToken` renvoyée pour obtenir la page suivante de résultats.

```
aws cloudtrail get-query-results
--query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

**Sortie**

```
{
    "QueryStatus": "RUNNING",
    "QueryStatistics": {
        "ResultsCount": 244,
        "TotalResultsCount": 1582,
        "BytesScanned":27044
    },
    "QueryResults": [
      {
        "key": "eventName",
        "value": "StartQuery",
      }
   ],
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
    "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10",
    "NextToken": "20add42078135EXAMPLE"
}
```

## Répertoriez toutes les requêtes sur un magasin de données d'événements à l'aide du AWS CLI
<a name="lake-cli-list-queries"></a>

L'exemple de commande AWS CLI **list-queries** suivant montre comment renvoyer une liste de requêtes et d'états de requête sur un magasin de données d'événement spécifié au cours des sept derniers jours. Vous devez spécifier un ARN ou le suffixe d'ID d'une valeur ARN pour `--event-data-store`. Pour raccourcir la liste des résultats, vous pouvez également spécifier une plage de temps, formatée en horodatage, en ajoutant les paramètres `--start-time` et `--end-time`, et une valeur `--query-status`. Les valeurs valides pour `QueryStatus` incluent `QUEUED`, `RUNNING`, `FINISHED`, `FAILED` ou `CANCELLED`.

**list-queries** dispose également de paramètres de pagination facultatifs. Utilisez `--max-results` pour spécifier un nombre maximal de résultats que la commande doit renvoyer sur une seule page. S'il y a plus de résultats que la valeur `--max-results` spécifiée, exécutez à nouveau la commande en ajoutant la valeur `NextToken` renvoyée pour obtenir la page suivante de résultats.

```
aws cloudtrail list-queries
--event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE
--query-status CANCELLED
--start-time 1598384589
--end-time 1598384602
--max-results 10
```

**Sortie**

```
{
    "Queries": [
        {
          "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
          "QueryStatus": "CANCELLED",
          "CreationTime": 1598911142
        },
        {
          "QueryId": "EXAMPLE2-4e89-9230-2127-5dr3aEXAMPLE", 
          "QueryStatus": "CANCELLED",
          "CreationTime": 1598296624
        }
     ],
    "NextToken": "20add42078135EXAMPLE"
}
```

## Annulez une requête en cours à l'aide du AWS CLI
<a name="lake-cli-cancel-query"></a>

L'exemple de AWS CLI **cancel-query** commande suivant annule une requête dont le statut est de`RUNNING`. Vous devez spécifier une valeur pour `--query-id`. Lorsque vous exécutez **cancel-query**, l’état de la requête peut être `CANCELLED` même si l’opération **cancel-query** n’est pas encore terminée.

**Note**  
Une requête annulée peut entraîner des frais. Votre compte est toujours facturé pour la quantité de données analysées avant l'annulation de la requête.

Voici un exemple de CLI.

```
aws cloudtrail cancel-query
--query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

**Sortie**

```
QueryId -> (string)
QueryStatus -> (string)
```