如何处理AWS S3预签名URL在下载/上传完成前过期的问题
S3预签名URL跨过期周期传输行为说明
核心结论
预签名URL的过期时间仅限制「请求到达S3服务端并完成签名校验的时间」,只要请求在过期前成功发起并通过校验,后续的上传/下载传输过程哪怕超过过期时长,也不会被强制中止。
分场景具体规则
下载场景
S3仅在收到GET请求的第一时间校验签名有效性,校验通过后就会开始返回文件流,整个流的传输过程不会再二次校验签名有效期。
举个实际例子:你设置预签名URL有效期为15分钟,在第14分59秒发起10G大文件的下载请求,只要S3已经开始返回数据,哪怕整个下载耗时超过1小时,也能完整完成,不会中途中断。
上传场景
分为两种上传形式分别适配规则:
- 普通PUT上传:和下载逻辑完全一致,只要PUT请求在URL过期前到达S3并通过签名校验,哪怕整个请求体传输完成的时间超过过期时间,也会正常完成上传。
- 分片上传:每个分片的上传请求都需要使用独立的预签名URL,仅要求每个分片的请求在对应URL的有效期内发起,已经启动的分片传输不会因为中途URL过期被中断。
易混淆的失效场景
如果出现传输中途中断的情况,优先排查以下和签名有效期无关的问题:
- 生成预签名URL使用的是IAM临时凭证(比如STS生成的凭证),如果凭证本身的有效期短于预签名URL的有效期,凭证过期后即使预签名URL还在有效期内也会失效。
- 客户端网络波动、TCP连接中断等网络层面问题,和预签名URL过期规则无关。
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

