

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.

# Déploiement et test de l'exemple d'application Amazon SNS Event Fork Pipelines
<a name="sns-deploy-test-fork-pipelines-sample-application"></a>

Pour accélérer le développement de vos applications basées sur les événements, vous pouvez abonner des pipelines de gestion d'événements, alimentés par Event Fork AWS Pipelines, à des rubriques Amazon SNS. AWS Event Fork Pipelines est une suite d'[applications imbriquées](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html) open source, basée sur le [modèle d'application AWS sans serveur](https://aws.amazon.com/serverless/sam/) (AWS SAM), que vous pouvez déployer directement depuis la [suite AWS Event Fork Pipelines](https://serverlessrepo.aws.amazon.com/applications?query=aws-event-fork-pipelines) (choisissez **Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés**) sur votre compte. AWS Pour de plus amples informations, veuillez consulter [Comment fonctionne AWS Event Fork Pipelines](sns-fork-pipeline-as-subscriber.md#how-sns-fork-works).

Cette page explique comment vous pouvez utiliser le AWS Management Console pour déployer et tester l'exemple d'application AWS Event Fork Pipelines.

**Important**  
Pour éviter d'encourir des coûts indésirables une fois le déploiement de l'exemple d'application AWS Event Fork Pipelines terminé, supprimez sa CloudFormation pile. Pour plus d'informations, consultez [Suppression d'une pile dans la console CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) dans le *Guide de l'utilisateur AWS CloudFormation *.

# AWS Exemple de cas d'utilisation d'Event Fork Pipelines
<a name="example-sns-fork-use-case"></a>

Le scénario suivant décrit une application de commerce électronique sans serveur pilotée par des événements qui utilise AWS Event Fork Pipelines. Vous pouvez utiliser cet [exemple d'application de commerce électronique](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api) dans le, AWS Serverless Application Repository puis le déployer dans votre Compte AWS AWS Lambda console, où vous pouvez le tester et examiner son code source GitHub.

![\[Architecture d'une application de commerce électronique sans serveur qui intègre Services AWS. Il décrit le flux entre les utilisateurs du commerce électronique qui passent des commandes via une API Gateway et les différents pipelines de traitement, notamment le stockage des commandes, l'analyse des recherches et la rediffusion, et montre comment les événements sont gérés et analysés via Amazon SNS, Lambda, Amazon SQS, DynamoDB et Kibana.\]](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/sns-fork-example-use-case.png)


Cette application de commerce électronique prend les commandes des acheteurs via une RESTful API hébergée par API Gateway et soutenue par la AWS Lambda fonction`CheckoutApiBackendFunction`. Cette fonction publie toutes les commandes reçues dans une rubrique Amazon SNS nommée `CheckoutEventsTopic`, qui transmet à son tour toutes les commandes à quatre différents pipelines.

Le premier pipeline est le pipeline de traitement standard des paiements conçu et mis en œuvre par le propriétaire de l'application d'e-commerce. Ce pipeline comprend la file d'attente Amazon SQS `CheckoutQueue` qui met en mémoire tampon toutes les commandes reçues, une AWS Lambda fonction nommée `CheckoutFunction` qui interroge la file d'attente pour traiter ces commandes, et la table `CheckoutTable` DynamoDB qui enregistre de manière sécurisée toutes les commandes passées.

## Appliquer les pipelines AWS Event Fork
<a name="applying-sns-fork-pipelines"></a>

Les composants de l'application d'e-commerce gèrent la logique d'entreprise de base. Toutefois, le propriétaire de l'application d'e-commerce propriétaire doit également prendre en compte les éléments suivants :
+ **Conformité - **Sauvegardes sécurisées et compressées, chiffrées au repos et nettoyage des informations sensibles
+ **Résilience - **Relecture de la plupart des commandes récentes en cas de défaillance du processus de réalisation
+ **Capacité de recherche - **Exécution d'analyses et génération des métriques sur les commandes passées

Au lieu d'implémenter cette logique de traitement des événements, le propriétaire de l'application peut abonner AWS Event Fork Pipelines à la `CheckoutEventsTopic` rubrique Amazon SNS
+ [Pipeline de stockage et de sauvegarde d'événements](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline) est configuré pour transformer les données afin de supprimer les détails des cartes de paiement, de mettre les données dans la mémoire tampon pendant 60 secondes, de les compresser à l'aide de GZIP et de les chiffrer à l'aide de la clé gérée par le client par défaut pour Amazon S3. Cette clé est gérée AWS et alimentée par le AWS Key Management Service (AWS KMS).

  Pour plus d'informations, consultez [Choisir Amazon S3 pour votre destination](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3), [Amazon Data Firehose Data Transformation](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html) et [Configurer les paramètres](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html) dans le manuel *Amazon Data Firehose* Developer Guide.
+ [Le pipeline de recherche et d'analyse d'événements](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline) est configuré avec un index de durée de nouvelle tentative de 30 secondes, un compartiment de stockage de commandes qui ne parviennent pas à être indexées dans le domaine de recherche et une politique de filtre permettant de limiter l'ensemble de commandes indexées.

  Pour plus d'informations, consultez [Choisir le OpenSearch service pour votre destination](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch) dans le manuel *Amazon Data Firehose Developer Guide*.
+ [Le pipeline de relecture d'événements](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) est configuré avec la partie de la file d'attente Amazon SQS du pipeline de traitement des commandes standard conçu et mis en œuvre par le propriétaire de l'application d'e-commerce.

  Pour de plus amples informations, consultez le [Nom et l'URL d'une file d'attente](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url) dans *Guide du développeur Amazon SQS*.

La politique de filtre JSON suivante est définie dans la configuration du pipeline de recherche et d'analyse d'événements. Elle sélectionne uniquement les commandes entrantes dans lesquelles le montant total s'élève à 100 USD ou plus. Pour de plus amples informations, veuillez consulter [Filtrage des messages Amazon SNS](sns-message-filtering.md).

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

En utilisant le modèle AWS Event Fork Pipelines, le propriétaire de l'application de commerce électronique peut éviter les frais de développement qui accompagnent souvent le codage d'une logique indifférenciée pour la gestion des événements. Au lieu de cela, elle peut déployer AWS Event Fork Pipelines directement depuis elle Compte AWS. AWS Serverless Application Repository 

# Étape 1 : déploiement de l'exemple d'application Amazon SNS
<a name="deploy-sample-application"></a>

1. Connectez-vous à la [AWS Lambda console](https://console.aws.amazon.com/lambda/).

1. Dans le panneau de navigation, choisissez **Fonctions**, puis **Créer une fonction**.

1. Sur la page **Créer une fonction**, procédez de la façon suivante :

   1. Choisissez **Parcourir le référentiel d'applications sans serveur**, **Applications publiques**, **Afficher les applications qui créent des politiques de rôles ou de ressources IAM personnalisées**.

   1. Recherchez `fork-example-ecommerce-checkout-api` et choisissez l'application.

1. Sur la page **fork-example-ecommerce-checkout-api**, procédez comme suit :

   1. Dans la section **Paramètres de l'application**, entrez un **Nom d'application** (par exemple, `fork-example-ecommerce-my-app`).
**Note**  
Pour rechercher vos ressources facilement plus tard, conservez le préfixe `fork-example-ecommerce`.
Pour chaque déploiement, le nom de l'application doit être unique. Si vous réutilisez le nom d'une application, le déploiement ne mettra à jour que la CloudFormation pile précédemment déployée (plutôt que d'en créer une nouvelle).

   1. (Facultatif) Entrez l'un des **LogLevel**paramètres suivants pour l'exécution de la fonction Lambda de votre application :
      + `DEBUG`
      + `ERROR`
      + `INFO` (par défaut)
      + `WARNING`

1. Choisissez **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications. (Je comprends que cette application crée des rôles IAM et des politiques de ressources personnalisés, et déploie des applications imbriquées.)** puis, en base de la page, choisissez **Deploy (Déployer)**.

Sur la *my-app* page **État du déploiement pour fork-example-ecommerce -**, Lambda affiche l'état **Votre application est en cours de déploiement**.

Dans la section **Ressources**, CloudFormation commence à créer la pile et affiche le statut **CREATE\$1IN\$1PROGRESS** pour chaque ressource. Lorsque le processus est terminé, CloudFormation affiche le statut **CREATE\$1COMPLETE**.

**Note**  
Le déploiement de toutes les ressources peut prendre 20-30 minutes.

Une fois le déploiement terminé, Lambda affiche l'état **Votre application a été déployée**.

# Étape 2 : Exécution de l'exemple d'application lié au SNS
<a name="execute-sample-application"></a>

1. Dans la AWS Lambda console, sur le panneau de navigation, sélectionnez **Applications**.

1. Sur la page **Applications**, dans le champ de recherche, recherchez `serverlessrepo-fork-example-ecommerce-my-app`, puis choisissez l'application.

1. Dans la section **Ressources**, effectuez les opérations suivantes :

   1. Pour trouver la ressource dont le type est **ApiGatewayRestApi**, triez les ressources par **type**, par exemple`ServerlessRestApi`, puis développez la ressource.

   1. Deux ressources imbriquées sont affichées, de types **ApiGatewayDeployment** et **ApiGatewayStage**.

   1. Copiez le lien **Point de terminaison de l'API de production** et ajoutez-lui `/checkout`, par exemple : 

      ```
      https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
      ```

1. Copiez le code JSON suivant dans un fichier nommé `test_event.json`.

   ```
   {
      "id": 15311,
      "date": "2019-03-25T23:41:11-08:00",
      "status": "confirmed",
      "customer": {
         "id": 65144,		
   	 "quantity": 2,
         "price": 25.00,
         "subtotal": 50.00
      }]
   }
   ```

1. Pour envoyer une demande HTTPS au point de terminaison de votre API, transmettez la charge utile de l'exemple d'événement comme entrée en exécutant une commande `curl`, par exemple :

   ```
   curl -d "$(cat test_event.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   L'API renvoie la réponse vide suivante, indiquant une exécution réussie :

   ```
   { }
   ```

# Étape 3 : vérification des performances de l'application et du pipeline Amazon SNS
<a name="verify-sample-application-pipelines"></a>

## Étape 1 : Vérification de l'exécution de l'exemple de pipeline de paiement
<a name="verify-execution-checkout-pipeline"></a>

1. Connectez-vous à la [console Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Dans le panneau de navigation, choisissez **Tables**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `CheckoutTable`.

1. Dans la page des détails de la table, choisissez **Éléments**, puis choisissez l'élément créé.

   Les attributs stockés sont affichés.

## Étape 2 : Vérification de l'exécution du pipeline de stockage et de sauvegarde des événements
<a name="verify-execution-event-storage-backup-pipeline"></a>

1. Connectez-vous à la [console Amazon S3](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation, choisissez **Compartiments**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `CheckoutBucket`.

1. Parcourez la hiérarchie de répertoires jusqu'à ce que vous trouviez un fichier avec l'extension `.gz`.

1. Pour télécharger le fichier, choisissez **Actions**, **Ouvrir**.

1. Le pipeline est configuré avec une fonction Lambda qui nettoie les informations de carte de paiement pour des raisons de conformité.

   Pour vérifier que la charge utile JSON stockée ne contient pas d'informations sur les cartes de paiement, décompressez le fichier.

## Étape 3 : Vérification de l'exécution du pipeline de recherche et d'analyse d'événements
<a name="verify-execution-event-search-analytics-pipeline"></a>

1. Connectez-vous à la [console OpenSearch de service](https://console.aws.amazon.com/aos/).

1. Dans le panneau de navigation, sous **Mes domaines**, choisissez le domaine préfixé avec `serverl-analyt`.

1. Le pipeline est configuré avec une politique de filtre d'abonnement Amazon SNS qui définit une condition de correspondance numérique.

   ****Pour vérifier que l'événement est indexé car il fait référence à une commande dont la valeur est supérieure à 100 USD, sur la *abcdefgh1ijk* page **serverl-analyt-**, choisissez Indices, checkout\$1events.****

## Étape 4 : Vérification de l'exécution du pipeline de rediffusion d'événements
<a name="verify-execution-event-replay-pipeline"></a>

1. Connectez-vous à la [console Amazon SQS](https://console.aws.amazon.com/sqs/).

1. Dans la liste des files d'attente, recherchez `serverlessrepo-fork-example` et choisissez `ReplayQueue`.

1. Choisissez **Envoyer et recevoir des messages**.

1. Dans la boîte de *123ABCD4E5F6* dialogue **Envoyer et recevoir des messages dans fork-example-ecommerce -*my-app*... ReplayP- ReplayQueue -**, choisissez **Sondage pour les** messages. 

1. Pour vérifier que l'événement est mis en file d'attente, choisissez **Plus de détails** en regard du message qui s'affiche dans la file d'attente.

# Étape 4 : Simulation d'un problème et rediffusion des événements pour le rétablissement
<a name="simulate-issue-replay-events-for-recovery"></a>

## Étape 1 : activer le problème simulé et envoyer une deuxième demande d'API
<a name="enable-simulated-issue-send-second-api-request"></a>

1. Connectez-vous à la [AWS Lambda console](https://console.aws.amazon.com/lambda/).

1. Dans le panneau de navigation, choisissez **Fonctions**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `CheckoutFunction`.

1. Sur le **fork-example-ecommerce*my-app*- CheckoutFunction -*ABCDEF*...** **page, dans la section **Variables d'environnement**, définissez la variable **BUG\$1ENABLED** sur **true**, puis choisissez Enregistrer.**

1. Copiez le code JSON suivant dans un fichier nommé `test_event_2.json`.

   ```
   {
   	   "id": 9917,
   	   "date": "2019-03-26T21:11:10-08:00",
   	   "status": "confirmed",
   	   "customer": {
   	      "id": 56999,
   "quantity": 1,
   	      "price": 75.00,
   	      "subtotal": 75.00
   	   }]
   	}
   ```

1. Pour envoyer une demande HTTPS au point de terminaison de votre API, transmettez la charge utile de l'exemple d'événement comme entrée en exécutant une commande `curl`, par exemple :

   ```
   curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout
   ```

   L'API renvoie la réponse vide suivante, indiquant une exécution réussie :

   ```
   { }
   ```

## Étape 2 : vérifier la corruption de données simulée
<a name="verify-simulated-data-corruption"></a>

1. Connectez-vous à la [console Amazon DynamoDB](https://console.aws.amazon.com/dynamodb/).

1. Dans le panneau de navigation, choisissez **Tables**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `CheckoutTable`.

1. Dans la page des détails de la table, choisissez **Éléments**, puis choisissez l'élément créé.

   Les attributs stockés sont affichés, certains étant marqués comme **CORROMPU \$1**

## Étape 3 : désactiver le problème simulé
<a name="disable-simulated-issue"></a>

1. Connectez-vous à la [AWS Lambda console](https://console.aws.amazon.com/lambda/).

1. Dans le panneau de navigation, choisissez **Fonctions**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `CheckoutFunction`.

1. Sur le **fork-example-ecommerce*my-app*- CheckoutFunction -*ABCDEF*...** **page, dans la section **Variables d'environnement**, définissez la variable **BUG\$1ENABLED** sur **false**, puis choisissez Enregistrer.**

## Étape 4 : activer la rediffusion pour résoudre le problème
<a name="enable-replay-recover-from-simulated-issue"></a>

1. Dans la AWS Lambda console, sur le panneau de navigation, choisissez **Functions**.

1. Recherchez `serverlessrepo-fork-example` et choisissez `ReplayFunction`.

1. Développez la section **Concepteur**, choisissez la vignette **SQS** puis, dans la section **SQS**, choisissez **Activé**.
**Note**  
Il faut compter environ 1 minute pour que le déclencheur source d'événements Amazon SQS soit activé.

1. Choisissez **Enregistrer**.

1. Pour afficher les attributs récupérées, revenez à la console Amazon DynamoDB.

1. Pour désactiver le replay, retournez sur la AWS Lambda console et désactivez le déclencheur de la source d'événements Amazon SQS pour. `ReplayFunction`