使用预签名URL上传至新建S3 Bucket失败(Windows报10054错误)
新建S3 Bucket预签名URL上传失败的解决方法
针对新建S3 Bucket使用预签名URL上传时频繁出现连接重置的问题,可尝试以下几种解决方案:
- 添加初始化延迟:新建Bucket后不要立即生成预签名URL执行上传操作,等待1~2分钟再发起请求。这是因为S3 Bucket创建后需要完成全局状态同步,短时间内的请求可能遇到未完全初始化的节点。
- 强制使用SigV4签名:生成预签名URL时明确指定采用SigV4签名版本。部分旧版AWS SDK可能默认使用旧签名协议,而新创建的Bucket可能仅兼容SigV4。以Python的boto3为例,可通过如下方式配置:
import boto3 from botocore.config import Config s3_client = boto3.client( 's3', config=Config(signature_version='s3v4') ) - 确保区域严格一致:确认生成预签名URL时使用的AWS区域与Bucket创建时指定的区域完全匹配,区域不匹配会导致请求路由异常,进而引发连接重置。
- 实现重试逻辑:在上传代码中添加针对
ConnectionResetError的指数退避重试机制,重试2~3次即可大概率绕过Bucket初始化阶段的不稳定状态。 - 验证权限配置:检查生成预签名URL所用IAM实体(用户/角色)是否拥有
s3:PutObject权限,同时确认Bucket的桶策略未阻止目标对象的上传请求(虽然此类问题更偏向初始化,但权限异常也可能表现为类似连接错误)。
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

