Jul*_*ian 6 amazon-s3 amazon-web-services amazon-sns aws-lambda
我想要实现的目标:我通过AWS SES接收电子邮件并将其存储到AWS S3.然后,电子邮件由AWS Lambda函数解析,结果存储到数据库.在创建新对象时,S3会调用Lambda.
问题:我的数据库中只有一小部分(我会说少于10%)的电子邮件.
在S3上,我设置了一个Event Notification
.它正在调用我的Lambda函数ObjectCreated (All)
.根据我的理解,这意味着,对于在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);
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我重复阵列上Records
的event
至少打印对象的名称一次.我也在我的Lambda代码的第一行中执行此操作:
console.log('> Lambda function invoked!');
Run Code Online (Sandbox Code Playgroud)
从我的日志来看,Lambda函数不是每次调用,而只是有时调用.为什么我这么想?
我今天下载了所有新的电子邮件,这些是1,245个对象.所有这些电子邮件也存储在S3上.但我只Lambda function invoked
在我的CloudWatch日志中找到了85次自动为Lambda设置的日志.
有没有人提示可能是错误甚至是我可以调试的想法?
我不知道您的 S3 事件通知问题的原因。但我不明白为什么你选择 S3 事件的方式?我的项目中也有类似的逻辑。我收到电子邮件,必须将它们存储在数据库中。
我通过以下操作在规则集中创建了规则:
Actions是有序列表,我使用这种方法从 S3 读取文件没有遇到问题。老实说,这是一个宠物项目,并没有在实际生产中发布。但我从不同的电子邮件地址(免费和公司)测试了它。
Invocation Type
PS:如果您要在后续步骤中处理电子邮件,请注意Lambda 操作。
归档时间: |
|
查看次数: |
784 次 |
最近记录: |