gpt4 book ai didi

amazon-web-services - Lambda并不总是收到AWS S3通知 'ObjectCreated'

转载 作者:行者123 更新时间:2023-12-04 16:08:01 26 4
gpt4 key购买 nike

我想要实现的目标:我正在通过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自动设置的。

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

最佳答案

我不知道您的S3事件通知问题的原因。但是我不明白为什么您选择S3事件的方式?我在项目中也有类似的逻辑。我收到了电子邮件,不得不将它们存储在数据库中。

我通过下一步操作在规则集中创建了规则:

  • 将电子邮件正文发送到S3
  • 从S3读取电子邮件的正文,并使用Lambda将其存储在DB中。

  • Actions list

    操作是有序列表,使用这种方法从S3读取文件时没有问题。老实说,这是一个宠物项目,并且没有在实际生产中发布。但是我从不同的电子邮件地址(免费和公司电子邮件地址)进行了测试。

    PS:如果要在后续步骤中处理电子邮件,请注意Lambda操作的 Invocation Type

    关于amazon-web-services - Lambda并不总是收到AWS S3通知 'ObjectCreated',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768407/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com