

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.

# Utilisation AWS Serverless Application Model de modèles pour déployer les EventBridge ressources Amazon
<a name="eb-use-sam"></a>

Vous pouvez créer et tester des [règles](eb-rules.md) manuellement dans la EventBridge console, ce qui peut contribuer au processus de développement à mesure que vous affinez [les modèles d'événements](eb-event-patterns.md). Cependant, une fois que vous êtes prêt à déployer votre application, il est plus facile d’utiliser un framework tel qu’[AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) pour lancer toutes vos ressources sans serveur de manière cohérente.

Nous allons utiliser cet [exemple d'application](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) pour voir comment vous pouvez utiliser des AWS SAM modèles pour créer EventBridge des ressources. Dans cet exemple, le fichier template.yaml est un AWS SAM modèle qui définit quatre [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fonctions et montre deux manières différentes d'intégrer les fonctions Lambda. EventBridge

Pour une présentation détaillée de cet exemple d’application, consultez [Tutoriel : Création d'un exemple d' EventBridge application Amazon](eb-tutorial-get-started.md).

 Il existe deux approches d'utilisation EventBridge et AWS SAM de modèles. Pour les intégrations simples où une fonction Lambda est invoquée par une règle, l’approche du **modèle combiné** est recommandée. Si votre logique de routage est complexe ou si vous vous connectez à des ressources extérieures à votre AWS SAM modèle, l'approche du **modèle séparé** est le meilleur choix.

**Topics**
+ [Modèle combiné](#eb-combined-template)
+ [Modèle séparé](#eb-separated-template)

## Modèle combiné
<a name="eb-combined-template"></a>

La première approche utilise la `Events` propriété pour configurer la EventBridge règle. L’exemple de code suivant définit un [événement](eb-events.md) qui invoque votre fonction Lambda.

**Note**  
Cet exemple crée automatiquement la règle sur le [bus d'événements](eb-event-bus.md) par défaut, qui existe dans tous les AWS comptes. Pour associer la règle à un bus d’événements personnalisé, vous pouvez ajouter `EventBusName` au modèle.

```
atmConsumerCase3Fn:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: atmConsumer/
    Handler: handler.case3Handler
    Runtime: nodejs12.x
    Events:
      Trigger:
        Type: CloudWatchEvent 
        Properties:
          Pattern:
            source:
              - custom.myATMapp
            detail-type:
              - transaction                
            detail:
              result:
                - "anything-but": "approved"
```

 Ce code YAML est équivalent à un modèle d'événement dans la EventBridge console. Dans YAML, il vous suffit de définir le modèle d'événement et de créer AWS SAM automatiquement un rôle IAM avec les autorisations requises. 

## Modèle séparé
<a name="eb-separated-template"></a>

Dans la seconde approche de définition d'une EventBridge configuration dans AWS SAM, les ressources sont séparées plus clairement dans le modèle. 

1. Vous devez d’abord définir la fonction Lambda :

   ```
   atmConsumerCase1Fn:
     Type: AWS::Serverless::Function
     Properties:
       CodeUri: atmConsumer/
       Handler: handler.case1Handler
       Runtime: nodejs12.x
   ```

1. Définissez ensuite la règle à l’aide d’une ressource `AWS::Events::Rule`. Les propriétés définissent le modèle d’événement et peuvent également spécifier des [cibles](eb-targets.md). Vous pouvez définir plusieurs cibles de manière explicite.

   ```
   EventRuleCase1: 
     Type: AWS::Events::Rule
     Properties: 
       Description: "Approved transactions"
       EventPattern: 
         source: 
           - "custom.myATMapp"
         detail-type:
           - transaction   
         detail: 
           result: 
             - "approved"
       State: "ENABLED"
       Targets: 
         - 
           Arn: 
             Fn::GetAtt: 
               - "atmConsumerCase1Fn"
               - "Arn"
           Id: "atmConsumerTarget1"
   ```

1. Enfin, définissez une `AWS::Lambda::Permission` ressource qui autorise l'appel EventBridge de la cible.

   ```
   PermissionForEventsToInvokeLambda: 
     Type: AWS::Lambda::Permission
     Properties: 
       FunctionName: 
         Ref: "atmConsumerCase1Fn"
       Action: "lambda:InvokeFunction"
       Principal: "events.amazonaws.com"
       SourceArn: 
         Fn::GetAtt: 
           - "EventRuleCase1"
           - "Arn"
   ```