Usar Amazon EventBridge y plantillas de AWS Serverless Application Model - Amazon EventBridge

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.

Usar Amazon EventBridge y plantillas de AWS Serverless Application Model

Puede crear y probar reglas manualmente en la consola de EventBridge, lo que puede ayudarte en el proceso de desarrollo a medida que refina los patrones de eventos. Sin embargo, una vez que esté preparado para implementar su aplicación, será más fácil utilizar un marco como AWS SAM para lanzar todos los recursos sin servidor de forma coherente.

Usaremos esta aplicación de ejemplo para analizar las formas en que puede usar las plantillas de AWS SAM para crear recursos de EventBridge. El archivo template.yaml de este ejemplo es una plantilla de AWS SAM que define cuatro funciones de AWS Lambda y muestra dos formas diferentes de integrar las funciones de Lambda con EventBridge.

Para ver esta aplicación de ejemplo, consulte Creación de una aplicación de muestra de Amazon EventBridge.

Existen dos métodos para usar EventBridge y plantillas de 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 conecta a recursos fuera de su plantilla de AWS SAM, la mejor opción es el método de Plantillas separadas.

Plantilla combinada

El primer método utiliza la propiedad Events para configurar la regla de EventBridge. El siguiente código de ejemplo define un evento que invoca la función de Lambda.

nota

En este ejemplo, se crea automáticamente la regla en el bus de eventos predeterminado, que existe en todas las cuentas de AWS. 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 consola de EventBridge. En YAML, solo necesita definir el patrón de eventos y AWS SAM crea automáticamente un rol de IAM con los permisos necesarios.

Plantilla separada

En el segundo método para definir una configuración de EventBridge 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
  2. 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. 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"
  3. Por último, defina un recurso de AWS::Lambda::Permission que conceda permiso a 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"