

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.

# Traitez les événements DynamoDB avec AWS SAM
<a name="serverless-example-ddb"></a>



Avec cet exemple d'application, vous construisez en utilisant ce que vous avez appris dans la présentation et le Guide de démarrage rapide, et installez un autre exemple d'application. Cette application se compose d'une fonction Lambda appelée par une source d'événement de table DynamoDB. La fonction Lambda est très simple : elle journalise les données qui ont été transmises par le message source de l'événement.

Cet exercice vous montre comment imiter les messages source d'événements qui sont transmis aux fonctions Lambda lorsqu'elles sont appelées.



## Avant de commencer
<a name="gs-ex2-prereq"></a>

Assurez-vous que vous avez terminé la configuration requise dans [Installer la CLI  AWS SAM](install-sam-cli.md).

## Étape 1 : initialiser l'application
<a name="gs-ex2-setup-local-app"></a>

Dans cette section, vous allez télécharger le package de candidature, qui se compose d'un AWS SAM modèle et d'un code d'application.

**Pour initialiser l'application**

1. Exécutez la commande suivante à l'invite de commande de la CLI  AWS SAM.

   ```
   sam init \
   --location gh:aws-samples/cookiecutter-aws-sam-dynamodb-python \
   --no-input
   ```

   Notez que `gh:` dans la commande ci-dessus, elle est étendue à l' GitHub URL`https://github.com/`.

1. Vérifiez le contenu du répertoire créé par la commande (`dynamodb_event_reader/`) : 
   + `template.yaml`— Définit deux AWS ressources dont l'application Read DynamoDB a besoin : une fonction Lambda et une table DynamoDB. Le modèle définit également le mappage entre les deux ressources.
   + Répertoire `read_dynamodb_event/` – Contient le code d'application DynamoDB.

## Étape 2 : tester l'application localement
<a name="gs-ex2-test-locally"></a>

Pour les tests locaux, utilisez la CLI  AWS SAM pour générer un exemple d'événement DynamoDB et invoquer la fonction Lambda :

```
sam local generate-event dynamodb update | sam local invoke --event - ReadDynamoDBEvent
```

La `generate-event` commande crée un message source d'événement de test, comme les messages créés lorsque tous les composants sont déployés dans le AWS cloud. Ce message de source d'événement est redirigé vers la fonction ReadDynamo DBEvent Lambda.

Vérifiez que les messages attendus soient imprimés sur la console, en fonction du code source dans `app.py`.

## Étape 3 : créer le package de l'application
<a name="gs-ex2-setup-pacakge-app"></a>

Après avoir testé votre application localement, vous utilisez le AWS SAMCLI pour créer un package de déploiement, que vous utilisez pour déployer l'application AWS dans le cloud.

**Pour créer un package de déploiement Lambda**

1. Créez un compartiment S3 à l'emplacement où vous souhaitez enregistrer le code empaqueté. Si vous souhaitez utiliser un compartiment S3 existant, ignorez cette étape.

   ```
   aws s3 mb s3://bucketname
   ```

1. Créez le package de déploiement en exécutant la commande CLI `package` suivante. 

   ```
   sam package \
       --template-file template.yaml \
       --output-template-file packaged.yaml \
       --s3-bucket bucketname
   ```

   Vous spécifiez le nouveau fichier de modèle, `packaged.yaml`, lorsque vous déployez l'application dans l'étape suivante.

## Étape 4 : déployer l'application
<a name="gs-ex2-setup-deploy-app"></a>

Maintenant que vous avez créé le package de déploiement, vous l'utilisez pour déployer l'application AWS dans le cloud. Vous testez ensuite l'application.

**Pour déployer l'application sans serveur dans le cloud AWS**
+ Dans le AWS SAMCLI, utilisez la commande `deploy` CLI pour déployer toutes les ressources que vous avez définies dans le modèle. 

  

  ```
  sam deploy \
      --template-file packaged.yaml \
      --stack-name sam-app \
      --capabilities CAPABILITY_IAM \
      --region us-east-1
  ```

  Dans la commande, le paramètre `--capabilities` permet à AWS CloudFormation de créer un rôle IAM. 

  CloudFormation crée les AWS ressources définies dans le modèle. Vous pouvez accéder aux noms de ces ressources dans la CloudFormation console.

**Pour tester l'application sans serveur dans le cloud AWS**

1. Ouvrez la console DynamoDB.

1. Insérez un enregistrement dans la table que vous venez de créer.

1. Accédez à l'onglet **Mesures** du tableau, puis choisissez **Afficher toutes les CloudWatch mesures**. Dans la CloudWatch console, choisissez **Logs** pour voir le résultat du journal.

## Étapes suivantes
<a name="gs-ex2-setup-deploy-app-next-steps"></a>

Pour en savoir plus AWS SAM, consultez les ressources suivantes :
+ **[Serverless Land](https://serverlessland.com/patterns?framework=AWS+SAM)** : site qui rassemble des modèles sans serveur, des exemples de code et des ressources d'apprentissage spécifiques aux applications AWS SAM.