How to Trigger an AWS Lambda from SNS with AWS CDK

To Nha Notes | March 29, 2023, 9 p.m.

import * as lambda from 'aws-cdk-lib/aws-lambda';
import {NodejsFunction} from 'aws-cdk-lib/aws-lambda-nodejs';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as subs from 'aws-cdk-lib/aws-sns-subscriptions';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import * as cdk from 'aws-cdk-lib';
import * as path from 'path';

export class CdkStarterStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 👇 create sns topic
    const topic = new sns.Topic(this, 'sns-topic', {
      displayName: 'My SNS topic',
    });

    // 👇 create lambda function
    const myLambda = new NodejsFunction(this, 'my-lambda', {
      memorySize: 1024,
      timeout: cdk.Duration.seconds(5),
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'main',
      entry: path.join(__dirname, `/../src/my-lambda/index.ts`),
    });

    // 👇 subscribe Lambda to SNS topic
    topic.addSubscription(new subs.LambdaSubscription(myLambda));

    new cdk.CfnOutput(this, 'snsTopicArn', {
      value: topic.topicArn,
      description: 'The arn of the SNS topic',
    })
  }
}

 

References

https://bobbyhadz.com/blog/aws-cdk-sns

https://github.com/bobbyhadz/aws-cdk-sns

https://stackoverflow.com/questions/57184083/aws-sns-how-to-get-subscriber-lambda-triggered-by-publisher-lambda-output

https://docs.aws.amazon.com/solutions/latest/constructs/aws-sns-lambda.html

https://dev.to/aws-builders/how-to-trigger-an-aws-lambda-from-sns-4c3a