From 61cad935c6dbda8d0702a691f549302f0d51f02e Mon Sep 17 00:00:00 2001 From: Jones Zachariah Noel N Date: Sun, 5 Sep 2021 13:28:35 +0530 Subject: [PATCH] Added SQS Lambda Fn invoker example --- SQS_With_Lambda_Fn_Sample/ReadME.md | 3 +++ .../event/sample-event.json | 14 ++++++++++++++ .../src/handlers/sqs-resolver.js | 8 ++++++++ SQS_With_Lambda_Fn_Sample/template.yaml | 17 +++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 SQS_With_Lambda_Fn_Sample/ReadME.md create mode 100644 SQS_With_Lambda_Fn_Sample/event/sample-event.json create mode 100644 SQS_With_Lambda_Fn_Sample/src/handlers/sqs-resolver.js create mode 100644 SQS_With_Lambda_Fn_Sample/template.yaml diff --git a/SQS_With_Lambda_Fn_Sample/ReadME.md b/SQS_With_Lambda_Fn_Sample/ReadME.md new file mode 100644 index 0000000..b4cb63f --- /dev/null +++ b/SQS_With_Lambda_Fn_Sample/ReadME.md @@ -0,0 +1,3 @@ +## SQS with AWS Lambda Function as a trigger + +From SQS Queue, a Lambda function can be added as a trigger for every message that is pushed into the queue with the attributes of batch size. Every message that is pushed into SQS Queue is a stringified content so when processing the message, it has to be parsed. \ No newline at end of file diff --git a/SQS_With_Lambda_Fn_Sample/event/sample-event.json b/SQS_With_Lambda_Fn_Sample/event/sample-event.json new file mode 100644 index 0000000..e80353b --- /dev/null +++ b/SQS_With_Lambda_Fn_Sample/event/sample-event.json @@ -0,0 +1,14 @@ +{ + "Records": [ + { + "messageId": "dbd99b32-ba44-4fe3-bc7c-de5767c3cd224", + "receiptHandle": "AQEB7OkfTQVDK6GX7DPIkxzSvCeNuS8hs4NqWNxmL==", + "body": "{\n\"message\":\"test\"\n}", + "messageAttributes": {}, + "md5OfBody": "078cafd5f9615b359f3440a27327b8bb", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:::", + "awsRegion": "" + } + ] + } \ No newline at end of file diff --git a/SQS_With_Lambda_Fn_Sample/src/handlers/sqs-resolver.js b/SQS_With_Lambda_Fn_Sample/src/handlers/sqs-resolver.js new file mode 100644 index 0000000..3f1428b --- /dev/null +++ b/SQS_With_Lambda_Fn_Sample/src/handlers/sqs-resolver.js @@ -0,0 +1,8 @@ +exports.handler = function(event, context, callback){ + //SQS triggers with Records being an array list of message objects. + event.Records.forEach(function(element) { + //message is available in body as a stringified content. + var message = JSON.parse(element.body) + console.log(message) + }) +} \ No newline at end of file diff --git a/SQS_With_Lambda_Fn_Sample/template.yaml b/SQS_With_Lambda_Fn_Sample/template.yaml new file mode 100644 index 0000000..5659db5 --- /dev/null +++ b/SQS_With_Lambda_Fn_Sample/template.yaml @@ -0,0 +1,17 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: Example of processing messages on an SQS queue with Lambda +Resources: + MySQSQueueFunction: + Type: AWS::Serverless::Function + Properties: + Handler: src/handlers/sqs-resolver.handler + Runtime: nodejs16.x + Events: + MySQSEvent: + Type: SQS + Properties: + Queue: !GetAtt MySqsQueue.Arn + BatchSize: 10 + MySqsQueue: + Type: AWS::SQS::Queue \ No newline at end of file