luk*_*302 5 eventtrigger amazon-s3 amazon-web-services aws-lambda
我们正在经历由S3 ObjectCreated-Events触发的Lambda的双Lambda调用.这些双调用发生恰好在第一次调用后10分钟,不是10分钟后的第一次尝试是完整的,但10分钟后,第一次调用发生.原始调用需要0.1到5秒之间的任何内容.没有调用会导致错误,它们都会成功完成.
我们知道SQS例如不保证完全一次但至少一次传递消息,我们会接受一些lambdas由于下面的分布式系统的结果而第二次被调用.然而,延迟10分钟听起来很奇怪.
大约10k条消息100-200导致双重调用.
AWS Support基本上说"10分钟的等待时间是设计的,但我们无法告诉您原因",这一点都没有用.
示例日志:两次调用,相隔10分钟,相同的RequestId
START RequestId:f9b76436-1489-11e7-8586-33e40817cb02版本:13
2017-03-29 14:14:09 INFO ImageProcessingLambda:104 - 处理1条记录
和
START RequestId:f9b76436-1489-11e7-8586-33e40817cb02版本:13
2017-03-29 14:24:09 INFO ImageProcessingLambda:104 - 处理1条记录
经过几轮 AWS 支持和其他支持以及几次单独的试运行后,这似乎只是“设计使然”。目前还不清楚为什么,但它就是发生了。问题既不是 S3 也不是 SQS / SNS,而只是 lambda 调用以及 lambda 服务如何将调用分派到 lambda 实例。
两次调用发生在所有调用的 1% 到 3% 之间,即第一次调用后 10 分钟。令人惊讶的是,甚至有三次(可能是四次)调用,其频率为基本概率的幂,所以基本上为 0.09%,...三次调用发生在第一次调用后 20 分钟。
如果您遇到这种情况,您只需使用您有权访问的任何内容来解决它。例如,我们现在将已处理的实体存储在 Cassandra 中,TTL 为 1 小时,并且仅在实体尚未处理时才响应来自 lambda 的消息。两次和三次调用都发生在这一小时的时间范围内。
| 归档时间: |
|
| 查看次数: |
2177 次 |
| 最近记录: |