AWS/Azure/OpenShift

How to trigger SQS from a Lambda Function in the same account

front

AWS Lambda is a serverless, event-driven computing platform provided by Amazon Web Services (AWS). The Lambda service allows its users to create functions, and write self-contained applications in any of the supported languages and runtimes. These functions are then uploaded to the AWS Lambda console which then executes these functions in the most efficient and flexible manner. AWS Lambda reduces the developer’s time in setting up the infrastructure and servers needed for the application. Kindly refer to these related guides: How to sync S3 Bucket with an EC2 instance, How to grant public access to S3 Bucket using Policy, and How to redirect requests for your bucket’s website endpoint to another bucket or domain.

On the other hand, Amazon Simple Queue Service (SQS) is a fully managed message queuing service provided by AWS to scale microservices, distributed systems, and serverless applications. It allows the professionals and developers to send, store, receive and retrieve multiple messages asynchronously and securely without any other services.

Both AWS Lambda and SQS seamlessly integrate with several other services to form different kinds of architectures. In this article, we will look at how we can trigger AWS Lambda from the SQS queue.

Creating a Lambda Function

– Sign in to the AWS Management Console.
– Navigate to the AWS Lambda Dashboard. Click on Create Function button at the top right corner of the screen.

Capture

Choose the Author from scratch option and enter the same values as the screenshot below.

2
Lambda Creation 1

In the Permissions section. Choose the “Create a new role from AWS policy templates” option and choose the SQS poller permissions as shown below.

3

Finally, click on create function button at the bottom of the screen. Replace the default function code with the following code.

import json

def lambda_handler(event, context):

  print(event)
  # do some processing here 
  response = {
      "statusCode": 200,
      "body": json.dumps(event)
  }

  return response

Remember to click on the deploy button to save this code change. You have now successfully created a Lambda Function.

Creating the SQS queue

Navigate to the AWS SQS Dashboard and click on the Create queue button. Choose the Standard Queue option and add the name of your SQS queue.

4

Leave the rest of the queue settings as default and click on create queue button. You have now successfully created your SQS queue.

Adding SQS as a lambda trigger

Back in the AWS Lambda Dashboard. Go to your newly created Lambda function. At the top of the page, click on the Add trigger button.

image

In the trigger configuration, choose SQS as your trigger and then find your SQS queue in the next option. Leave the other values as default and click on the “Add” button.

image-1

You have now successfully configured SQS as a trigger for AWS Lambda. Let’s test this out.

Test the trigger

In the SQS console find your SQS queue and open it. Click on the Send and receive messages button at the top right of the page.

image-2

Enter the body of the SQS message and click on the “Send Message” button. You should get a prompt similar to the image below. You can change the body of the SQS queue or send the same message multiple times.

image-3

In the monitor tab of your Lambda function soon you can see new Lambda invocations. In the image below you can see 12 Lambda invocations that were started by my SQS messages. Note that once AWS Lambda successfully executes, the SQS message is automatically deleted from the queue. So, you will probably not be able to see your messages in SQS console because the lambda function will process them immediately.

image-4

With this, we have come to an end of this article. I hope you found the guide helpful. If you have any questions, do let me know in the comment section.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x