I am trying to create an AWS Lambda trigger that sends email to a user. The Lambda is triggered by SQS, where I will be pushing my messages from my code. Now when I am using test cases on Lambda, everything is working fine, but when I am sending json data over SQS (which is sent to by using python), all the fields are shown as undefined. Following is my Lambda code:
var aws = require('aws-sdk');
var ses = new aws.SES({region: 'ap-south-1'});
var RECEIVER = '[email protected]';
var SENDER = '[email protected]';
var response = {
"isBase64Encoded": false,
"headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*'},
"statusCode": 200,
"body": "{\"result\": \"Success.\"}"
};
exports.handler = (event, context, callback) => {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},
Message: {
Body: {
Text: {
Data: 'My Name is ' + event.user +'\nTimestamp:'+ event.timestamp,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'Test : ' + event.name,
Charset: 'UTF-8'
}
},
Source: SENDER
};
ses.sendEmail(params, function (err, data) {
callback(null, {err: err, data: data});
if (err) {
console.log(err);
context.fail(err);
} else {
console.log(data);
context.succeed(event);
}
});
};
My Python File:
class SQSQueue(object):
def __init__(self, queueName=None):
self.resource = boto3.resource('sqs',region_name="xxxxxxx")
self.queue = self.resource.get_queue_by_name(QueueName=AWS_SQS_QUEUE_NAME)
self.QueueName = queueName
def send(self, Message={}):
data = json.dumps(Message)
response = self.queue.send_message(MessageBody=data)
return response
if __name__ == '__main__':
q = SQSQueue(queueName=AWS_SQS_QUEUE_NAME)
name = "xxxxxxx"
timestamp = "yyyyyyyy"
message = {
"user": name,
"timestamp": timestamp
}
response = q.send(Message=message)
I am not a node developer, and have no knowledge of the language, I just followed a couple of posts/videos and developed this.
Posts I referred for this query: AWS Lambda Javascript JSON object undefined AWS Lambda with API Gateway throwing response error
Output I am getting on my email:
My Name is undefined
Timestamp:undefined