

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.

# Tutoriel : Création d'un exemple d' EventBridge application Amazon
<a name="eb-tutorial-get-started"></a>

[Vous pouvez l'utiliser EventBridge pour acheminer [des événements vers des](eb-events.md) fonctions Lambda spécifiques à l'aide de règles.](eb-rules.md)

Dans ce didacticiel, vous allez utiliser le AWS CLI fichier Node.js et le code du [ GitHubdépôt](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) pour créer les éléments suivants :
+ Une fonction [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) qui génère des événements pour les opérations de distributeur automatique de billets (ATM).
+ Trois fonctions Lambda à utiliser comme [cibles](eb-targets.md) d'une EventBridge règle.
+ La règle qui route les événements créés vers la fonction en aval appropriée sur la base d’un [modèle d’événement](eb-event-patterns.md).

Cet exemple utilise des AWS SAM modèles pour définir les EventBridge règles. Pour en savoir plus sur l'utilisation AWS SAM des modèles avec, EventBridge voir[Utilisation AWS Serverless Application Model de modèles pour déployer les EventBridge ressources Amazon](eb-use-sam.md).

Dans le référentiel, le sous-répertoire *atmProducer* contient `handler.js`, qui représente le service ATM qui génère les événements. Ce code est un gestionnaire Lambda écrit dans Node.js et publie des événements EventBridge via le [AWS SDK](https://www.npmjs.com/package/aws-sdk) à l'aide de cette ligne de code. JavaScript 

```
const result = await eventbridge.putEvents(params).promise()
```

Ce répertoire contient également `events.js`, qui répertorie plusieurs opérations de test dans un tableau d’entrées. Un événement unique est défini JavaScript comme suit :

```
{
  // Event envelope fields
  Source: 'custom.myATMapp',
  EventBusName: 'default',
  DetailType: 'transaction',
  Time: new Date(),

  // Main event body
  Detail: JSON.stringify({
    action: 'withdrawal',
    location: 'MA-BOS-01',
    amount: 300,
    result: 'approved',
    transactionId: '123456',
    cardPresent: true,
    partnerBank: 'Example Bank',
    remainingFunds: 722.34
  })
}
```

La section *Detail* de l’événement spécifie les attributs d’opération. Il s’agit notamment de l’emplacement du distributeur automatique, du montant, de la banque partenaire et du résultat de l’opération.

Le fichier `handler.js` contenu dans le sous-répertoire *atmConsumer* contient trois fonctions :

```
exports.case1Handler = async (event) => {
  console.log('--- Approved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case2Handler = async (event) => {
  console.log('--- NY location transactions ---')
  console.log(JSON.stringify(event, null, 2))
}

exports.case3Handler = async (event) => {
  console.log('--- Unapproved transactions ---')
  console.log(JSON.stringify(event, null, 2))
}
```

Chaque fonction reçoit les événements de transaction, qui sont enregistrés via les `console.log` instructions envoyées à [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html). Les fonctions consommateur fonctionnent indépendamment du producteur et n’ont pas connaissance de la source des événements.

La logique de routage est contenue dans les EventBridge règles déployées par le AWS SAM modèle de l'application. Les règles évaluent le flux d’événements entrant et routent les événements correspondants vers les fonctions Lambda cibles.

Les règles utilisent des modèles d’événements qui sont des objets JSON dont la structure est la même que celle des événements correspondants. Voici le modèle d’événement pour l’une des règles.

```
{
  "detail-type": ["transaction"],
  "source": ["custom.myATMapp"],
  "detail": {
    "location": [{
      "prefix": "NY-"
    }]
  }
}
```

**Topics**
+ [Prérequis](#eb-gs-prereqs)
+ [Étape 1 : Créer l’application](#eb-gs-create-application)
+ [Étape 2 : Exécuter l’application](#eb-gs-run-application)
+ [Étape 3 : Consulter les journaux et vérifier que l’application fonctionne](#eb-gs-check-logs)
+ [Étape 4 : Nettoyer vos ressources](#cleanup)

## Prérequis
<a name="eb-gs-prereqs"></a>

Pour suivre ce didacticiel, vous aurez besoin des ressources suivantes :
+ Un AWS compte. [Créez un AWS compte](https://portal.aws.amazon.com/gp/aws/developer/registration/index.html) si vous n'en avez pas déjà un.
+ AWS CLI installé. Pour l'installer AWS CLI, consultez la section [Installation, mise à jour et désinstallation de la AWS CLI version 2.](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)
+ Node.js 12.x installé. Pour installer Node.js, accédez à la page de [téléchargement](https://nodejs.org/en/download/).

## Étape 1 : Créer l’application
<a name="eb-gs-create-application"></a>

Pour configurer l'exemple d'application, vous allez utiliser AWS CLI et Git pour créer les AWS ressources dont vous aurez besoin.

**Pour créer l'application**

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

1. [Installez Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) et [installez la AWS Serverless Application Model CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) sur votre machine locale.

1. Créez un répertoire, puis accédez-y dans un terminal.

1. Dans la ligne de commande, entrez `git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example`.

1. Dans la ligne de commande, exécutez la commande suivante :

   ```
   cd ./amazon-eventbridge-producer-consumer-example
   sam deploy --guided
   ```

1. Dans le terminal, procédez comme suit :

   1. Dans `Stack Name`, entrez un nom pour la pile. Par exemple, nommez-la `Test`.

   1. Dans `AWS Region`, entrez la région. Par exemple, `us-west-2`.

   1. Pour `Confirm changes before deploy`, saisissez `Y`.

   1. Pour `Allow SAM CLI IAM role creation`, entrez `Y`.

   1. Pour `Save arguments to configuration file`, entrez `Y`.

   1. Pour `SAM configuration file`, saisissez `samconfig.toml`.

   1. Pour `SAM configuration environment`, saisissez `default`.

## Étape 2 : Exécuter l’application
<a name="eb-gs-run-application"></a>

Maintenant que vous avez configuré les ressources, vous allez utiliser la console pour tester les fonctions.

**Pour exécuter l’application**

1. Ouvrez la [console Lambda](https://console.aws.amazon.com/lambda/) dans la région où vous avez déployé l' AWS SAM application.

1. Il existe quatre fonctions Lambda avec le préfixe **atm-demo**. Sélectionnez la **atmProducerFn**fonction, puis choisissez **Actions**, **Test**.

1. Entrez `Test` en guise de **Nom**.

1. Sélectionnez **Tester)**.

## Étape 3 : Consulter les journaux et vérifier que l’application fonctionne
<a name="eb-gs-check-logs"></a>

Maintenant que vous avez lancé l'application, vous allez utiliser la console pour consulter les CloudWatch journaux.

**Pour consulter les journaux**

1. Ouvrez la [CloudWatch console](https://console.aws.amazon.com/cloudwatch/) dans la même région où vous avez exécuté l' AWS SAM application.

1. Choisissez **Journaux**, puis **groupe de journaux**.

1. Sélectionnez le groupe de journaux contenant **atmConsumerCase1**. Vous constatez la présence de deux flux représentant les deux opérations approuvées par le distributeur automatique de billets. Choisissez un flux de journaux pour examiner la sortie.

1. Revenez à la liste des groupes de journaux, puis sélectionnez le groupe de journaux contenant **atmConsumerCase2**. Vous y trouvez deux flux représentant les deux opérations correspondant au filtre de localisation *New York*.

1. Revenez à la liste des groupes de journaux et sélectionnez le groupe de journaux contenant **atmConsumerCase3**. Ouvrez le flux pour voir les opérations refusées.

## Étape 4 : Nettoyer vos ressources
<a name="cleanup"></a>

Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant AWS les ressources que vous n'utilisez plus, vous évitez des frais inutiles sur votre AWS compte.

**Pour supprimer la ou les EventBridge règles**

1. Ouvrez la [page Règles](https://console.aws.amazon.com/events/home#/rules) de la EventBridge console.

1. Sélectionnez la ou les règles que vous avez créées.

1. Sélectionnez **Delete (Supprimer)**.

1. Sélectionnez **Delete (Supprimer)**.

**Pour supprimer la ou les fonctions Lambda**

1. Ouvrez la [page Functions](https://console.aws.amazon.com/lambda/home#/functions) (Fonctions) de la console Lambda.

1. Sélectionnez la ou les fonctions que vous avez créées.

1. Sélectionnez **Actions**, **Supprimer**.

1. Sélectionnez **Delete (Supprimer)**.

**Pour supprimer le ou les groupes de CloudWatch journaux Logs**

1. Ouvrez la [console CloudWatch](https://console.aws.amazon.com/Cloudwatch/home).

1. Choisissez **Journaux**, **Groupes de journaux**.

1. Sélectionnez le ou les groupes de journaux qui ont été créés dans ce didacticiel.

1. Sélectionnez **Actions**, **Supprimer le ou les groupes de journaux**.

1. Sélectionnez **Supprimer**.