You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同用户S3图片上传后出现串档问题的技术排查求助

不同用户S3图片上传后出现串档问题的技术排查求助

各位技术同行们,我最近碰到了一个完全颠覆常规认知的诡异问题,折腾了好久都找不到头绪,想请教下有没有人遇到过类似情况,或者能给点排查思路!

先给大家梳理下整个流程和背景:
我们的网站前端JS会处理图片上传,流程是先生成基于图片文件名的S3预签名URL,不同用户的S3存储Key是完全唯一的,比如:

  • 用户1对应的S3 Key:uploads/02512088.png
  • 用户2对应的S3 Key:uploads/evil-art-1.15.png

前端上传的核心代码是这样的:

const uploadResponse = await fetch(body.signedUrl, { 
  method: 'PUT', 
  headers: { 'Content-Type': current_image_file.type }, 
  body: current_image_file 
});

重点是,这两个用户是完全独立的——用的不同电脑、不同浏览器标签页,各自的JS运行环境完全隔离。按照我对代码执行、计算机系统的理解,根本不可能出现用户1的图片“串”到用户2的浏览器里,再通过用户2的电脑上传到他专属的S3 Key这种情况啊!

但诡异的事情发生了:到了后续业务流程,当我们需要从用户2的S3 Key下载图片时,居然下载到了用户1的图片!

给大家看一下Lambda函数里的下载日志:

2025-06-23T22:39:56.840Z 2f0282b8-31e8-44f1-be4d-57216c059ca8 INFO Downloading image from S3 bucket: mybucket123 with key: uploads/evil-art-1.14.png
2025-06-23T22:39:56.936Z 2f0282b8-31e8-44f1-be4d-57216c059ca8 INFO Image downloaded successfully!
2025-06-23T22:39:56.937Z 2f0282b8-31e8-44f1-be4d-57216c059ca8 INFO ORIGINAL IMAGE SIZE: 267 66

我们已经确认下错了文件:这个下载到的图片尺寸和用户1的图片完全匹配,和用户2自己上传的图片尺寸完全不符;而且后续用户2的业务流程最终输出的也是用户1的图片,实锤串档了。

更离谱的是,下载操作是在Lambda函数里执行的——每个用户的请求对应独立的Lambda执行环境,代码里明确指定了用户2的S3 Key,怎么会下载到用户1的图片?

从代码逻辑、系统隔离性、执行环境的设计来看,这事儿从技术上应该“完全不可能发生”,但它确实实实在在出现了。有没有人碰到过类似的S3串档问题?或者有什么我没考虑到的排查方向?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:05:29