View a markdown version of this page

Utilización AWS Serverless Application Model plantillas para implementar los recursos de Amazon EventBridge - 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.

Utilización AWS Serverless Application Model plantillas para implementar los recursos de Amazon EventBridge

Puedes crear y probar reglas manualmente en la EventBridge consola, lo que puede ayudarte en el proceso de desarrollo a medida que refinas 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 las 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 funciones y muestra dos formas diferentes de integrar las funciones de Lambda con ellas. EventBridge

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

Hay dos enfoques para usar 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 tienes una lógica de enrutamiento compleja o te estás conectando a recursos fuera de tu AWS SAM plantilla, el enfoque de plantillas separadas es la mejor opción.

Plantilla combinada

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

nota

Este ejemplo crea automáticamente la regla en el bus de eventos 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

En el segundo enfoque para definir una EventBridge configuración 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 AWS::Lambda::Permission recurso que conceda permiso EventBridge para invocar el objetivo.

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