问题描述
我使用以下链接将通过 Amazon SNS 发送的 Amazon SES 通知存储在 DynamoDB 中
https://aws.amazon.com/premiumsupport/knowledge-center/lambda-sns-ses-dynamodb/
我能够看到表格中生成的字段。
以下是 Lambda 函数
--------------------------Lambda Code Begins------------------------
console.log("Loading event");
var aws = require("aws-sdk");
var ddb = new aws.DynamoDB({ params: { TableName: "SESNotifications" } });
exports.handler = function (event,context,callback) {
console.log("Received event:",JSON.stringify(event,null,2));
var SnsPublishTime = event.Records[0].Sns.Timestamp;
var SnsTopicArn = event.Records[0].Sns.TopicArn;
var SESMessage = event.Records[0].Sns.Message;
SESMessage = JSON.parse(SESMessage);
var SESMessageType = SESMessage.notificationType;
var SESMessageId = SESMessage.mail.messageId;
var SESDestinationAddress = SESMessage.mail.destination.toString();
var LambdaReceiveTime = new Date().toString();
if (SESMessageType == "Bounce") {
var SESreportingMTA = SESMessage.bounce.reportingMTA;
var SESbounceSummary = JSON.stringify(SESMessage.bounce.bouncedRecipients);
var itemParams = {
Item: {
SESMessageId: { S: SESMessageId },SnsPublishTime: { S: SnsPublishTime },SESreportingMTA: { S: SESreportingMTA },SESDestinationAddress: { S: SESDestinationAddress },SESbounceSummary: { S: SESbounceSummary },SESMessageType: { S: SESMessageType },},};
ddb.putItem(itemParams,function (err,data) {
if (err) {
callback(err)
} else {
console.log(data);
callback(null,'')
}
});
} else if (SESMessageType == "Delivery") {
var SESsmtpResponse1 = SESMessage.delivery.smtpResponse;
var SESreportingMTA1 = SESMessage.delivery.reportingMTA;
var itemParamsdel = {
Item: {
SESMessageId: { S: SESMessageId },SESsmtpResponse: { S: SESsmtpResponse1 },SESreportingMTA: { S: SESreportingMTA1 },};
ddb.putItem(itemParamsdel,'')
}
});
} else if (SESMessageType == "Complaint") {
var SESComplaintFeedbackType = SESMessage.complaint.complaintFeedbackType;
var SESFeedbackId = SESMessage.complaint.FeedbackId;
var itemParamscomp = {
Item: {
SESMessageId: { S: SESMessageId },SESComplaintFeedbackType: { S: SESComplaintFeedbackType },SESFeedbackId: { S: SESFeedbackId },};
ddb.putItem(itemParamscomp,'')
}
});
}
};
------------------------Lambda Code Ends----------------------------
以下是SNS通知
{
"notificationType": "Delivery","mail": {
"timestamp": "2021-01-01T00:00:00.000Z","source": "test@mydomain.in","sourceArn": "arn:aws:ses:ap-south-1:123456789000:identity/mydomain.in","sourceIp": "123.123.123.123","sendingAccountId": "123456789000","messageId": "1234567890-ap-south-1","destination": [
"something@hotmail.com","something@gmail.com"
],"headersTruncated": false,"headers": [
{
"name": "Received","value": "from DELL-Admin-PC"
},{
"name": "MIME-Version","value": "1.0"
},{
"name": "From","value": "\"SES Test\" <test@mydomain.in>"
},{
"name": "To","value": "something@gmail.com,something@hotmail.com"
},{
"name": "Date","value": "01 Jan 2021 00:00:00 +0530"
},{
"name": "Subject","value": "Test Email from SES"
},{
"name": "Content-Type","value": "text/plain; charset=us-ascii"
},{
"name": "Content-transfer-encoding","value": "quoted-printable"
}
],"commonHeaders": {
"from": [
"SES Test <test@mydomain.in>"
],"date": "01 Jan 2021 00:00:00 +0530","to": [
"something@gmail.com","something@hotmail.com"
],"subject": "Test Email from SES"
}
},"delivery": {
"timestamp": "2021-01-01T00:00:00.000Z","processingTimeMillis": 1534,"recipients": [
"something@gmail.com"
],"smtpResponse": "250 2.0.0 OK 1234567890 f11si2056653pgr.168 - gsmtp","remoteMtaIp": "74.125.24.27","reportingMTA": "c123-123.smtp-out.ap-south-1.amazonses.com"
}
}
请指导我如何在表格中捕获自、主题和日期。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)