In this guide, we will learn how to invoke a Lambda function (when something happens in Contentstack) that sends a message to an AWS SNS topic. This AWS SNS topic can then send a notification, along with the payload, to any app, service or endpoint of your choice.
To proceed with the procedure, the following is required:
- Basic knowledge of AWS SNS
- Working knowledge of AWS API Gateways
- Access to the AWS environment
- Contentstack account
Set up Lambda Webhook Listener
Setting up an AWS Lambda Webhook Listener is a 4-step procedure:
- Create an AWS Lambda function
- Configure AWS API Gateways
- Deploy your APIs
- Configure a webhook in Contentstack
Create an AWS Lambda Function
Create an AWS Lambda function that sends the data (received from Contentstack via webhooks) to AWS SNS.
- Login to your AWS Management Console, select AWS Lambda Service from the service list.
- Click on the Create Function button, and then on the Author from Scratch option.
- Configure the lambda based on your requirements. Choose Node.js as your run-time language.
Note: You can use any language instead of Node.js. You can also add triggers to your lambda to push an event to SNS when the lambda is invoked.
- AWS Lambda offers an inline code editor. You can write your lambda code here. Another option is to write the lambda code on your machine and then load it in the code editor. The inline editor has the basic code written, you can replace it with your own code as shown in the example below:
- In the Lambda function handler and role, keep index.handler as Handler and for the Role choose an existing role or create a new role from template(s).
- Review your setting and click on the Create Function option if everything you entered is correct.
Now that you have configured your lambda, let's move on and configure the AWS API Gateways.
Set up API Gateway
For your Lambda to be accessible publicly through an HTTP POST, you need to configure the AWS API Gateway using your function as the backend for the API as shown below:
- Log in to AWS Management Console and select API Gateways from the services list.
- Click on the Getting started or Create API button (depending on whether you have already an API configured or not).
- From the available options, select New API. Enter the name and description of your API.
- Click on Actions in the Resources column, and select Create Method.
- From the resultant dropdown, Select POST and click on the check mark.
- Select Lambda Function as the integration type for this endpoint.
- Select the Lambda Region, and then type in the name of your Lambda Function.
Note: The region into which your Lambda is deployed isn’t easily identifiable when you’re deploying your Lambda, so you might have to do a little hunting.
- Click on the Save button. You’ll get a notification which asks you to confirm that this API will be granted permission to invoke your Lambda function.
- Click OK to grant the permission.
Deploy Your API
To make your API ready to use, you need to deploy your API.
- From the Actions drop-down. select Deploy API.
- Select [New Stage] in the Deployment stage and enter prod (or anything you like to identify this stage) in the Stage name.
- Click on the Deploy button.
Your API is now deployed and you will get a URL, which you can use to invoke the APIs.
Configure a Webhook in Contentstack
To trigger the event on any update on the entry, you will have to set up a Webhook in Contentstack. To do this, log in to your Contentstack account and perform the following steps:
- Hover over the “Settings” gear icon and select Webhooks.
- Click on + New Webhook.
- Enter the name for your Webhook, for example, AWS-Webhook Listener.
- In the URL to notify field, enter the URL to be notified when the event is triggered. This URL is the one which you generated when you deployed your APIs (as shown in the above section). Complete the remaining settings as shown in the screenshot below:
Additional Resource: To avoid potential security threats, you can secure your webhooks using any of our highly recommended security measures.
- When any content is updated, the condition specified inside the “When” section gets executed which triggers the notification.
- Click on the Save button to save your webhook settings.
- Now try updating an entry and you should receive a notification at the mentioned URL.
Additional Resource: You can refer to our guides on how you can use Contentstack Webhooks with AWS Lambda to automate several content management tasks.