David Perez
David Perez

Reputation: 488

How to define multiple triggers for lambda function in SAM template?

I created a lambda function from a SAM template, and defined multiple triggers, but only one of these triggers is being created in cloudformation. This is my sam template:

Myfunc:
    Type: AWS::Serverless::Function
    Properties:
        FunctionName: name
        CodeUri: /
        Handler: app.lambdaHandler
        Runtime: nodejs12.x
        Role: myrole            
        Events:
            Trigger:
                Type: CloudWatchEvent
                Properties:
                    EventBusName: mybus
                    Pattern:
                        source: 
                            - a
                        detail-type:
                            - b
            Trigger:
                Type: CloudWatchEvent
                Properties:
                    EventBusName: mybus
                    Pattern:
                        source:
                            - c

This template deploys correctly but creates only one rule, and in the aws console, on the sam template it shows:

Events:
    Trigger:
      Type: CloudWatchEvent
      Properties:
        EventBusName: mybus
        Pattern:
          source:
          - c

Any idea how to define multiple triggers for a lambda in the sam template? Is it impossible?

Upvotes: 5

Views: 5028

Answers (1)

David Perez
David Perez

Reputation: 488

The Events fields is a dictionary, so you have to give different names to your triggers as in:

Events:
    Trigger:
        Type: CloudWatchEvent
        Properties:
            EventBusName: mybus
            Pattern:
                source: 
                    - a
                detail-type:
                    - b
    TriggerForSourceC:
        Type: CloudWatchEvent
        Properties:
            EventBusName: mybus
            Pattern:
                source:
                    - c

Upvotes: 7

Related Questions