繁体   English   中英

AWS SQS 中缺少 s3 事件

[英]Missing s3 events in AWS SQS

我有一个 AWS Lambda 函数,它应该由来自简单队列服务 SQS 的消息触发。 当新的 json 文件写入我的 s3 存储桶时,或者当 s3 存储桶中的现有 json 文件被覆盖时,这个 SQS 应该会收到通知。 这两种情况的事件类型都是 s3:ObjectCreated,我看到这两种情况的通知都是我的 SQS。 现在,问题是 s3 中经常有一个新文件(或更新了 s3 中的现有文件),但是 sqs 中没有相应的消息。 丢失了太多文件,Lambda 不知道应该处理这些文件,在 Lambda 中,我将接收到的 SQS 有效负载的全部内容打印到日志文件中,然后尝试使用aws --profile aaa logs filter-log-events --log-group-name /aws/lambda/name --start-time 1554357600000 --end-time 1554396561982 --filter-pattern "missing_file_name_pattern"类的东西找到那些丢失的文件aws --profile aaa logs filter-log-events --log-group-name /aws/lambda/name --start-time 1554357600000 --end-time 1554396561982 --filter-pattern "missing_file_name_pattern"但找不到任何东西,这意味着 s3:objectCreated没有为这个丢失的文件生成事件。 是否有一些条件会阻止新的/更新的 s3 文件的 s3:objectCreated 事件? 有办法解决吗? 或者某种解决方法,可能是?

根据 AWS 文档:

如果同时对单个非版本化对象进行两次写入,则可能只会发送一个事件通知。 如果您想确保为每次成功的写入发送事件通知,您可以在您的存储桶上启用版本控制。 使用版本控制,每次成功的写入都会创建对象的新版本,并且还会发送事件通知。

https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html

另外,为什么不直接从 S3 触发 lambda?

两种可能性:

  1. 有些事件可能会延迟或根本不发送“Amazon S3 事件通知通常会在几秒钟内发送事件,但有时可能需要一分钟或更长时间。在极少数情况下,事件可能会丢失。” ,虽然非常罕见。

  2. 您有一些错误,并且 lambda 在处理此消息时没有打印您期望的内容/您没有正确搜索日志。

您还应该确保在 SQS 上所有记录都已成功提取和处理。

确保您已将所有创建对象事件作为触发器选中。

我遇到了一个问题,其中大于 8MB 的文件被作为多部分上传上传,这些上传被列为单独的另一个触发器到 PUT 触发器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM