我想要实现的目标:我通过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);
  }
}

如您所见,我遍历 event 中的 Records 数组,并至少打印一次对象的名称 . 我也在我的Lambda代码的第一行中执行此操作:

console.log('> Lambda function invoked!');

从我的日志来看,Lambda函数每次调用 not ,但有时只调用 . 为什么我这么想?

我今天下载了所有新的电子邮件,这些是1,245个对象 . 所有这些电子邮件也存储在S3上 . 但我只在我的CloudWatch日志中找到85次 Lambda function invoked ,这些日志已自动为Lambda设置 .


有没有人提示可能是错误甚至是我可以调试的想法?