S3触发Lambda限流:设置预留并发会导致触发事件丢失吗?
Lambda配置预留并发时,S3触发的事件是否会丢失?
针对你提到的「上传500个文件触发S3事件,Lambda预留并发设为10」的场景,结论是:事件不会丢失,具体逻辑如下:
- S3事件触发Lambda的机制基于队列实现,当请求量超过Lambda当前可用并发(包含预留并发)时,额外事件会进入Lambda内部事件队列等待,不会直接被丢弃。
- 预留并发设为10,意味着始终有10个热启动状态的Lambda实例可随时处理请求。500个事件同时触发时,先由这10个实例处理第一批事件,处理完成后立即承接队列中的下一批任务;同时Lambda会在账户并发限额内动态扩展临时并发,加速处理进度,直到所有500个事件处理完毕。
- 若出现处理失败的情况,Lambda默认会自动重试2次;如果重试仍失败,还可配置**死信队列(DLQ)**留存失败事件,进一步避免丢失。
需要注意的是,若账户并发限额过低,可能会减慢处理速度,但绝不会造成事件丢失——S3会确保事件成功递送至Lambda事件队列,Lambda则按自身并发能力逐步处理队列任务。
内容的提问来源于stack exchange,提问作者Sefirosu
相关产品推荐
相关产品推荐

