

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.

# Présentation des tests avec sam local generate-event
<a name="using-sam-cli-local-generate-event"></a>

Utilisez la AWS Serverless Application Model `sam local generate-event` sous-commande Command Line Interface (AWS SAMCLI) pour générer des échantillons de charge utile d'événements pour les applications prises en charge. Services AWS Vous pouvez ensuite modifier et transmettre ces événements à des ressources locales pour les tester.
+ Pour une introduction à la AWS SAMCLI, voir [Qu'est-ce que c'est AWS SAMCLI ?](what-is-sam-overview.md#what-is-sam-cli)
+ Pour obtenir la liste des options de commande `sam local generate-event`, consultez [sam local generate-event](sam-cli-command-reference-sam-local-generate-event.md).

Un *événement* est un objet JSON qui est généré lorsqu'un utilisateur Service AWS exécute une action ou une tâche. Ces événements contiennent des informations spécifiques, telles que les données traitées ou le timestamp de l'événement. La plupart des Services AWS génèrent des événements et les événements de chaque service sont formatés de manière unique pour le service en question.

Les événements générés par un service sont transmis à d'autres services en tant que *source d'événements*. Par exemple, un élément placé dans un compartiment Amazon Simple Storage Service (Amazon S3) peut générer un événement. Cet événement peut ensuite être utilisé comme source d'événement pour une fonction AWS Lambda afin de poursuivre le traitement des données.

Les événements que vous générez avec `sam local generate-event` sont formatés selon la même structure que les événements réels créés par le AWS service. Vous pouvez modifier le contenu de ces événements et les utiliser pour tester les ressources de votre application.

## Conditions préalables
<a name="using-sam-cli-local-generate-event-prerequisites"></a>

Pour utiliser `sam local generate-event`, installez la CLI AWS SAM en procédant comme suit :
+ [AWS SAM prérequis](prerequisites.md).
+ [Installer la CLI  AWS SAM](install-sam-cli.md).

Avant d'utiliser `sam local generate-event`, nous vous recommandons d'avoir des connaissances de base sur les points suivants :
+ [Configuration de la CLI  AWS SAM](using-sam-cli-configure.md).
+ [Créez votre application dans AWS SAM](using-sam-cli-init.md).
+ [Initiation à la construction avec AWS SAM](using-sam-cli-build.md).
+ [Présentation du déploiement avec AWS SAM](using-sam-cli-deploy.md).

## Générer des exemples d'événements
<a name="using-sam-cli-local-generate-event-generate"></a>

Utilisez la AWS SAMCLI `sam local generate-event` sous-commande pour générer des événements pour les personnes prises en charge Services AWS.

**Pour voir la liste des produits pris en charge Services AWS**

1. Exécutez les commandes suivantes :

   ```
   $ sam local generate-event
   ```

1. La liste des produits pris en charge Services AWS s'affichera. Voici un exemple :

   ```
   $ sam local generate-event
   ...
   Commands:
     alb
     alexa-skills-kit
     alexa-smart-home
     apigateway
     appsync
     batch
     cloudformation
     ...
   ```

**Pour générer un événement local**

1. Exécutez `sam local generate-event` et fournissez le nom du service pris en charge. La liste des types d'événements que vous pouvez générer s'affichera. Voici un exemple :

   ```
   $ sam local generate-event s3
   
   Usage: sam local generate-event s3 [OPTIONS] COMMAND [ARGS]...
   
   Options:
     -h, --help  Show this message and exit.
   
   Commands:
     batch-invocation  Generates an Amazon S3 Batch Operations Invocation Event
     delete            Generates an Amazon S3 Delete Event
     put               Generates an Amazon S3 Put Event
   ```

1. Pour générer l'exemple d'événement, exécutez `sam local generate-event` en fournissant le service et le type d'événement.

   ```
   $ sam local generate-event <service> <event>
   ```

   Voici un exemple :

   ```
   $ sam local generate-event s3 put
   {
     "Records": [
       {
         "eventVersion": "2.0",
         "eventSource": "aws:s3",
         "awsRegion": "us-east-1",
         "eventTime": "1970-01-01T00:00:00.000Z",
         "eventName": "ObjectCreated:Put",
         "userIdentity": {
           "principalId": "EXAMPLE"
         },
         "requestParameters": {
           "sourceIPAddress": "127.0.0.1"
         },
         "responseElements": {
           "x-amz-request-id": "EXAMPLE123456789",
           "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
         },
         "s3": {
           "s3SchemaVersion": "1.0",
           "configurationId": "testConfigRule",
           "bucket": {
             "name": "sam-s3-demo-bucket",
             "ownerIdentity": {
               "principalId": "EXAMPLE"
             },
             "arn": "arn:aws:s3:::sam-s3-demo-bucket"
           },
           "object": {
             "key": "test/key",
             "size": 1024,
             "eTag": "0123456789abcdef0123456789abcdef",
             "sequencer": "0A1B2C3D4E5F678901"
           }
         }
       }
     ]
   }
   ```

Ces exemples d'événements contiennent des valeurs d'espace réservé. Vous pouvez modifier ces valeurs pour faire référence aux ressources réelles dans votre application ou pour faciliter les tests locaux.

**Pour modifier un exemple d'événement**

1. Vous pouvez modifier les exemples d'événements à l'invite de commande. Pour afficher vos options, exécutez ce qui suit :

   ```
   $ sam local generate-event <service> <event> --help
   ```

   Voici un exemple :

   ```
   $ sam local generate-event s3 put --help
   
   Usage: sam local generate-event s3 put [OPTIONS]
   
   Options:
     --region TEXT       Specify the region name you'd like, otherwise the
                         default = us-east-1
     --partition TEXT    Specify the partition name you'd like, otherwise the
                         default = aws
     --bucket TEXT       Specify the bucket name you'd like, otherwise the
                         default = example-bucket
     --key TEXT          Specify the key name you'd like, otherwise the default =
                         test/key
     --debug             Turn on debug logging to print debug message generated
                         by AWS SAM CLI and display timestamps.
     --config-file TEXT  Configuration file containing default parameter values.
                         [default: samconfig.toml]
     --config-env TEXT   Environment name specifying default parameter values in
                         the configuration file.  [default: default]
     -h, --help          Show this message and exit.
   ```

1. Utilisez l'une de ces options à l'invite de commande pour modifier votre exemple de charge utile d'événement. Voici un exemple :

   ```
   $ sam local generate-event s3 put--bucket sam-s3-demo-bucket
   
   {
     "Records": [
       {
         "eventVersion": "2.0",
         "eventSource": "aws:s3",
         "awsRegion": "us-east-1",
         "eventTime": "1970-01-01T00:00:00.000Z",
         "eventName": "ObjectCreated:Put",
         "userIdentity": {
           "principalId": "EXAMPLE"
         },
         "requestParameters": {
           "sourceIPAddress": "127.0.0.1"
         },
         "responseElements": {
           "x-amz-request-id": "EXAMPLE123456789",
           "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
         },
         "s3": {
           "s3SchemaVersion": "1.0",
           "configurationId": "testConfigRule",
           "bucket": {
             "name": "sam-s3-demo-bucket",
             "ownerIdentity": {
               "principalId": "EXAMPLE"
             },
             "arn": "arn:aws:s3:::sam-s3-demo-bucket"
           },
           "object": {
             "key": "test/key",
             "size": 1024,
             "eTag": "0123456789abcdef0123456789abcdef",
             "sequencer": "0A1B2C3D4E5F678901"
           }
         }
       }
     ]
   }
   ```

## Utiliser les événements générés pour les tests locaux
<a name="using-sam-cli-local-generate-event-use"></a>

Enregistrez les événements générés localement et utilisez d'autres sous-commandes `sam local` pour les tester.

**Pour enregistrer vos événements générés localement**
+ Exécutez les commandes suivantes :

  ```
  $ sam local generate-event <service> <event> <event-option> > <filename.json>
  ```

  Voici un exemple d'événement enregistré sous forme de fichier `s3.json` dans le dossier `events` de notre projet.

  ```
  sam-app$ sam local generate-event s3 put --bucket amzn-s3-demo-bucket > events/s3.json
  ```

**Pour utiliser un événement généré pour des tests locaux**
+ Transmettez l'événement avec d'autres sous-commandes `sam local` à l'aide de l'option `--event`.

  Voici un exemple d'utilisation de l'événement `s3.json` pour appeler notre fonction Lambda localement :

  ```
  sam-app$ sam local invoke --event events/s3.json S3JsonLoggerFunction
  
  Invoking src/handlers/s3-json-logger.s3JsonLoggerHandler (nodejs18.x)
  Local image is up-to-date
  Using local image: public.ecr.aws/lambda/nodejs:18-rapid-x86_64.
  
  Mounting /Users/.../sam-app/.aws-sam/build/S3JsonLoggerFunction as /var/task:ro,delegated, inside runtime container
  START RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 Version: $LATEST
  END RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128
  REPORT RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128  Init Duration: 1.23 ms  Duration: 9371.93 ms      Billed Duration: 9372 ms        Memory Size: 128 MB     Max Memory Used: 128 MB
  ```

## En savoir plus
<a name="using-sam-cli-local-generate-event-learn"></a>

Pour obtenir la liste de toutes les options `sam local generate-event`, consultez [sam local generate-event](sam-cli-command-reference-sam-local-generate-event.md).

Pour une démonstration de l'utilisation de `sam local`, consultez [AWS SAM pour le développement local. Tester AWS Cloud des ressources issues d'environnements de développement locaux](https://www.youtube.com/watch?v=NzPqMrdgD1s&list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd&index=24) dans le cadre de la *série Serverless Land Sessions with SAM on YouTube*.