How do i parse event object for SNS notification for SES put to s3 bucket

0

I have the following in my lambda function. However, I am not getting the data point I thought I could get, namely msg.receipt.action.objectKey. According to https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-notifications-contents.html , I believe I am referencing it correctly. What am I missing?

exports.handler = (event, context, callback) => {
let msg = event.Records[0].Sns.Message
console.log("Message: ", msg)
console.log ("msg.receipt.action.objectKey: ", msg.receipt.action.objectKey) // returns undefined.
}

According to Cloudwatch msg equals

{
"notificationType": "Received",
"mail": {
"timestamp": "2019-12-30T01:44:39.191Z",
"source": "source email",
"messageId": "message id",
"destination": [
"destination email"
],
"headersTruncated": false,
"headers": [
{
"name": "Return-Path",
"value": "email"
},
{
"name": "Received",
"value": "value"
},
{
"name": "X-SES-Spam-Verdict",
"value": "PASS"
},
{
"name": "X-SES-Virus-Verdict",
"value": "PASS"
},
{
"name": "Received-SPF",
"value": "pass (spfCheck:"
},
{
"name": "Authentication-Results",
"value": "amazonses.com; spf=pass (spfCheck: "
},
{
"name": "X-SES-RECEIPT",
"value": ""
},
{
"name": "X-SES-DKIM-SIGNATURE",
"value": ""
},
{
"name": "Received",
"value": ""
},
{
"name": "DKIM-Signature",
"value": ""
},
{
"name": "X-Google-DKIM-Signature",
"value": ""
},
{
"name": "X-Gm-Message-State",
"value": "
},
{
"name": "X-Google-Smtp-Source",
"value": ""
},
{
"name": "X-Received",
"value": ""
},
{
"name": "MIME-Version",
"value": "1.0"
},
{
"name": "From",
"value": ""
},
{
"name": "Date",
"value": "Sun, 29 Dec 2019 20:44:26 -0500"
},
{
"name": "Message-ID",
"value": ""
},
{
"name": "Subject",
"value": "What ever"
},
{
"name": "To",
"value": ""
},
{
"name": "Content-Type",
"value": "multipart/alternative; ""
}
],
"commonHeaders": {
"returnPath": "",
"from": [
""
],
"date": "Sun, 29 Dec 2019 20:44:26 -0500",
"to": [
""
],
"messageId": "",
"subject": "What ever"
}
},
"receipt": {
"timestamp": "2019-12-30T01:44:39.191Z",
"processingTimeMillis": 421,
"recipients": [
"receipent@email.com"
],
"spamVerdict": {
"status": "PASS"
},
"virusVerdict": {
"status": "PASS"
},
"spfVerdict": {
"status": "PASS"
},
"dkimVerdict": {
"status": "PASS"
},
"dmarcVerdict": {
"status": "PASS"
},
"action": {
"type": "S3",
"topicArn": "arn:aws:sns:us-east-1:account number:topic",
"bucketName": "bucket",
"objectKeyPrefix": "prefix",
"objectKey": " object key"
}
}
}

Edited by: rannic on Dec 31, 2019 5:07 AM

JSON.parse was the answer.

cranni
asked 4 years ago676 views
1 Answer
0

JSON.parse(msg) was the answer.

cranni
answered 4 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions