我想要实现的目标:我通过AWS SES接收电子邮件并将其存储到AWS S3。然后,电子邮件由AWS Lambda函数解析,结果存储到数据库。在创建新对象时,S3会调用Lambda。
问题:我的数据库中只有一小部分(我会说不到10%)的电子邮件。
在S3上,我设置了Event Notification
。它在ObjectCreated (All)
上调用我的Lambda函数。根据我的理解,这意味着,对于在S3上创建的每个新对象(即SES存储的电子邮件),都会调用Lambda函数。
Lambda函数做了几件事,但至少它在这里做了:
exports.handler = function(event, context) {
Async.mapSeries(event.Records,
function dealWithOneMail(record, callback) {
var srcKey = decodeURIComponent(record.s3.object.key.replace(/\+/g, " "));
console.log('> Working on object ' + srcKey);
}
}
如您所见,我遍历Records
中event
的数组,并至少打印一次对象的名称。我也在我的Lambda代码的第一行中执行此操作:
console.log('> Lambda function invoked!');
根据我的日志判断,Lambda函数每次都被不调用,但有时只调用。为什么我这么想?
我今天下载了所有新电子邮件,这些是1,245个对象。所有这些电子邮件也存储在S3上。但我在CloudWatch日志中只发现85次Lambda function invoked
,这些日志已自动为Lambda设置。
有没有人提示可能是错误甚至是我可以调试的想法?