Last time I talked about Lambda and SNS here in How to trigger Lambda with SNS. The great thing with Lambda is that it's brought with Serverless. Serverless has a configuration file
serverless.yml where you can configure absolutely everything concerning your Lambda (env variables, plugins, iam roles, aws resources access, event, runtime, timeout etc..)
Configure and deploy easily
The thing behind
serverless.yml is that your configuration file will drastically change the way you are currently deploying applications. Actually you'll not have to double check all of your attached events between services, they will be properly connected. Otherwise you'll have to go to your Lambda and manually link your data according to the specified resource/service.
There is a documentation that shows you how to attach event directly from your
However when I worked with SNS it did not work as expected. Unfortunately, I realize that Serverless was poorly documented or outdated for some part of it . I did find multiple way of doing it but as a result my Lambda was not deployed or not properly SNS attached.
See the following options:
- sns: topicName: topic_name displayName: topic_display_name OR - sns: arn:aws:sns:xxxx:xxxx:xxxx OR - sns: arn:aws:sns:xxxx:xxxx:xxxx
So the external-sns-events helps you to check all of your attached event and make sure they will be well attached each time your Lambda is deployed.
Just add serverless-plugin-external-sns-events as plugin into
plugins: - serverless-plugin-external-sns-events
Once this is done, this is how you can attach SNS event to a Lambda:
functions: your_function_name: description: description handler: your_function_handler events: - externalSNS: first_SNS_topicName - externalSNS: second_SNS_topicName
Plugin will subscribe/unsubscribe for you if needed.
In this way you are ready to go to deploy and attach on the fly your Lambda across your services with SNS.
That's all for today, hope it helps you to understand Lambda and SNS and especially the way you can attach a SNS topic through your Serverless configuration's file.