Como o Amazon EventBridge e os modelos do AWS Serverless Application Model - Amazon EventBridge

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á.

Como o Amazon EventBridge e os modelos do AWS Serverless Application Model

Também é possível criar e testar regras manualmente no console do EventBridge, o que pode ajudar no processo de desenvolvimento à medida que você refina os padrões de eventos. No entanto, quando estiver tudo pronto para implantar sua aplicação, será mais fácil usar uma estrutura como a de AWS SAM para lançar todos os seus recursos com tecnologia sem servidor de forma consistente.

Será usado esta aplicação de exemplo para analisar como é possível usar modelos do AWS SAM para criar recursos do EventBridge. O arquivo template.yaml neste exemplo é um modelo do AWS SAM que define quatro funções do AWS Lambda e mostra duas maneiras diferentes de integrar as funções do Lambda com o EventBridge.

Para obter uma explicação passo a passo dessa aplicação de exemplo, consulte Crie uma aplicação de amostra do Amazon EventBridge.

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

Modelo combinado

A primeira abordagem usa a propriedade Events para configurar a regra do EventBridge. O código de exemplo a seguir define um evento que invoca sua função do Lambda.

nota

Este exemplo cria automaticamente a regra no barramento de eventos padrão, que existe em todas as contas da AWS. 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"

Este código YAML é equivalente a um padrão de evento no console do EventBridge. No YAML, só é preciso definir o padrão do evento e o AWS SAM cria automaticamente um perfil do IAM com as permissões necessárias.

Modelo separado

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

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

    atmConsumerCase1Fn: Type: AWS::Serverless::Function Properties: CodeUri: atmConsumer/ Handler: handler.case1Handler Runtime: nodejs12.x
  2. 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. É 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"
  3. Por fim, defina um recurso AWS::Lambda::Permission que conceda permissão ao EventBridge para invocar o destino.

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