How to add triggers for a AWS Lambda function created using a CloudFormation template?

12,635

Solution 1

You can use cloudwatch rule to trigger your lambda function :

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
      MyCloudWatchRule:
        Type: "AWS::Events::Rule"
        Properties:
          Description: "Rule to trigger lambda"
          Name: "MyCloudWatchRule"
          EventPattern: <Provide Valid JSON Event pattern>
          State: "ENABLED"
          Targets:
            - Arn: "arn:aws:lambda:us-west-2:12345678:function:MyLambdaFunction"
              Id: "1234567-acvd-awse-kllpk-123456789"

Ref :

Solution 2

It's been a while so I imagine you've solved the problem, but I'll put in my 2 cents to help others.

It's best to use SAM (Serverless Application Model) for this kind of things. So use AWS::Serverless::Function instead of AWS::Lambda::Function

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html

In there, you can specify an EventSource which accepts the following possible values:

  • S3
  • SNS
  • Kinesis
  • DynamoDB
  • SQS
  • Api
  • Schedule
  • CloudWatchEvent
  • CloudWatchLogs
  • IoTRule
  • AlexaSkill
  • Cognito
  • HttpApi

SAM does the rest of the work. Follow this guide for the rest of the details: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html

Solution 3

Nowadays, this issue is fixed by Amazon: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#aws-resource-events-rule--examples

Just create Lambda permissions like in the example.

Solution 4

Lambda function can be triggered by several AWS resources such as S3, SNS, SQS, API, etc. Checkout for the full list at AWS docs

I suggest you use Altostra Designer, which let you create and configure Lambda Function super quick and also choose what will trigger it.

Share:
12,635
trans1st0r
Author by

trans1st0r

Updated on June 04, 2022

Comments