

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de AWS Serverless Application Model plantillas para implementar EventBridge los recursos de Amazon
<a name="eb-use-sam"></a>

Puede crear y probar [reglas](eb-rules.md) manualmente en la EventBridge consola, lo que puede ayudar en el proceso de desarrollo a medida que refina [los patrones de eventos](eb-event-patterns.md). Sin embargo, una vez que esté preparado para implementar su aplicación, será más fácil utilizar un marco como [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) para lanzar todos los recursos sin servidor de forma coherente.

Usaremos esta [aplicación de ejemplo](https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example) para analizar las formas en que puedes usar AWS SAM las plantillas para crear EventBridge recursos. El archivo template.yaml de este ejemplo es una AWS SAM plantilla que define cuatro [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)funciones y muestra dos formas diferentes de integrar las funciones de Lambda con. EventBridge

Para ver esta aplicación de ejemplo, consulte [Tutorial: Creación de una aplicación de muestra de Amazon EventBridge](eb-tutorial-get-started.md).

 Existen dos enfoques de uso de las plantillas. EventBridge AWS SAM Para integraciones sencillas en las que una sola regla invoca una función de Lambda, se recomienda el método de **Plantilla combinada**. Si tiene una lógica de enrutamiento compleja o se está conectando a recursos externos a su AWS SAM plantilla, el enfoque de **plantillas separadas** es la mejor opción.

**Topics**
+ [Plantilla combinada](#eb-combined-template)
+ [Plantilla separada](#eb-separated-template)

## Plantilla combinada
<a name="eb-combined-template"></a>

El primer enfoque utiliza la `Events` propiedad para configurar la EventBridge regla. El siguiente código de ejemplo define un [evento](eb-events.md) que invoca la función de Lambda.

**nota**  
En este ejemplo, se crea automáticamente la regla en el [bus de eventos](eb-event-bus.md) predeterminado, que existe en todas las AWS cuentas. Para asociar la regla a un bus de eventos personalizado, puede el `EventBusName` a la plantilla.

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

 Este código YAML equivale a un patrón de eventos de la EventBridge consola. En YAML, solo necesitas definir el patrón de eventos y crear AWS SAM automáticamente un rol de IAM con los permisos necesarios. 

## Plantilla separada
<a name="eb-separated-template"></a>

En el segundo enfoque para definir una EventBridge configuración en AWS SAM, los recursos se separan más claramente en la plantilla. 

1. En primer lugar, defina la función de Lambda:

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

1. A continuación, defina la regla mediante un recurso de `AWS::Events::Rule`. Las propiedades definen el patrón de eventos y también pueden especificar [destinos](eb-targets.md). Puede definir varios destino de forma explícita.

   ```
   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 último, defina un `AWS::Lambda::Permission` recurso que conceda permiso EventBridge para invocar el destino.

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