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

使用S3 Mock时abortMultiPart接口调用返回404问题求助

S3取消未完成分块上传返回404的排查原因

你初始化分块上传的代码如下:

CreateMultipartUploadRequest request = CreateMultipartUploadRequest.builder()
    .bucket(bucket).key(destinationUrl).build();
CreateMultipartUploadResponse multipart = s3Client.createMultipartUpload(request);
return multipart.uploadId();

传入相同的bucket、key和uploadId调用取消接口却返回404,可能的原因包括:

  • Bucket/Key大小写不匹配:S3的Bucket名称在多数区域区分大小写,Key也严格区分大小写。如果取消请求中的bucket或key与初始化时的大小写不一致(比如初始化用MyBucket,取消时写成mybucket),会直接找不到对应的上传会话。
  • UploadId传递错误:检查uploadId是否完整传递,有没有被截断、转义或存储时被修改。哪怕是一个字符的差异,都会导致请求找不到目标会话。
  • 上传会话已自动过期:S3默认会在7天后清理未完成的分块上传,如果间隔时间过长,目标会话已经被系统自动删除,此时请求会返回404。
  • 隐性权限问题:部分场景下,权限不足时S3不会返回403而是404。确认执行取消操作的身份(IAM用户/角色)是否拥有s3:AbortMultipartUpload权限,同时检查Bucket策略是否允许该操作。
  • 客户端区域/Endpoint不匹配:初始化上传和取消上传使用的S3客户端是否配置了相同的区域和Endpoint?如果客户端指向的区域不同,相当于访问不同的存储节点,自然找不到对应的上传会话。
  • Key的特殊字符编码问题:如果destinationUrl包含空格、特殊符号,初始化时客户端可能自动做了URL编码,但取消请求时没有使用编码后的Key,导致Key不匹配。

内容的提问来源于stack exchange,提问作者JoseCarlosPB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:50:59