

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando AWS Serverless Application Model modelos para implantar EventBridge recursos da Amazon
<a name="eb-use-sam"></a>

Você pode criar e testar [regras](eb-rules.md) manualmente no EventBridge console, o que pode ajudar no processo de desenvolvimento à medida que você refina [os padrões de eventos](eb-event-patterns.md). No entanto, quando estiver tudo pronto para implantar sua aplicação, será mais fácil usar uma estrutura como a de [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) para lançar todos os seus recursos com tecnologia sem servidor de forma consistente.

Usaremos esse [aplicativo de exemplo](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) para analisar as maneiras pelas quais você pode usar AWS SAM modelos para criar EventBridge recursos. O arquivo template.yaml neste exemplo é um AWS SAM modelo que define quatro [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)funções e mostra duas maneiras diferentes de integrar as funções Lambda com. EventBridge

Para obter uma explicação passo a passo dessa aplicação de exemplo, consulte [Tutorial: criar uma aplicação de exemplo do Amazon EventBridge](eb-tutorial-get-started.md).

 Existem duas abordagens de uso EventBridge e AWS SAM modelos. Para integrações simples em que uma função do Lambda é invocada por uma regra, a abordagem de **Modelo combinado** é recomendada. Se você tem uma lógica de roteamento complexa ou está se conectando a recursos fora do seu AWS SAM modelo, a abordagem de **modelo separado** é a melhor escolha.

**Topics**
+ [Modelo combinado](#eb-combined-template)
+ [Modelo separado](#eb-separated-template)

## Modelo combinado
<a name="eb-combined-template"></a>

A primeira abordagem usa a `Events` propriedade para configurar a EventBridge regra. O código de exemplo a seguir define um [evento](eb-events.md) que invoca sua função do Lambda.

**nota**  
Este exemplo cria automaticamente a regra no [barramento de eventos](eb-event-bus.md) padrão, que existe em todas as AWS contas. Para associar a regra a um barramento de eventos personalizado, você pode adicionar o `EventBusName` ao modelo.

```
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"
```

 Esse código YAML é equivalente a um padrão de evento no EventBridge console. No YAML, você só precisa definir o padrão do evento e criar AWS SAM automaticamente uma função do IAM com as permissões necessárias. 

## Modelo separado
<a name="eb-separated-template"></a>

Na segunda abordagem para definir uma EventBridge configuração em AWS SAM, os recursos são separados mais claramente no modelo. 

1. Primeiro, defina a função do Lambda:

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

1. Em seguida, defina a regra usando um recurso da `AWS::Events::Rule`. As propriedades definem o padrão do evento e também podem especificar [destinos](eb-targets.md). É possível definir explicitamente vários destinos.

   ```
   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. Por fim, defina um `AWS::Lambda::Permission` recurso que conceda permissão EventBridge para invocar o alvo.

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