逐日 AI

OSS 上传失败与签名错误排查:AccessDenied 的七种姿势

作者:夸父

对象存储(OSS/S3)的高频报错排查:签名不匹配、AccessDenied、上传中断、跨域失败。每类给诊断思路与修复动作,附预签名 URL 的注意事项。

SignatureDoesNotMatch:签名不一致

排查三项:AccessKeySecret 是否复制完整(前后空格是惯犯);服务器时间是否准确(date 核对,偏差大会导致签名时间戳校验失败——装 chrony/ntp 自动对时);请求头是否在签名后被修改(代理/网关注入了额外头)。逐项排,三项里必有一个。

AccessDenied:权限拒绝

RAM 子账号权限:子账号没有被授予该 Bucket 的操作权限(AliyunOSSFullAccess 或最小化的 Bucket 级策略);Bucket 策略:Bucket 自身的 policy 可能禁止了写操作;对象权限冲突:Bucket 是私有的,尝试匿名读取当然 403——私有读必须走签名 URL。

上传中断/超时

大文件上传的稳定性方案是分片上传:网络抖动只重传分片不重传全文件。逐日 AI 的大文件(成片)上传已走分片;自建脚本上传大文件时也用分片模式。频繁中断先查服务器到 OSS 的网络质量(内网 endpoint 比 公网 endpoint 快且免费——服务器与 OSS 同 region 时务必用内网 endpoint)。

CORS 跨域失败

前端直传 OSS 场景的专属问题:Bucket 的 CORS 规则没配或没包含你的来源域名。修复:Bucket → 数据安全 → 跨域设置,添加允许的 Origins/Methods/Headers。签名 URL 下载(GET)不走 CORS,只有浏览器直传(PUT/POST)需要。

下载链接失效

签名 URL 过期(重新生成);Bucket 设了 Referer 白名单而下载方不带 referer;文件被生命周期规则归档(归档文件需要解冻才能读——查文件存储类型)。三类对号入座。

常见问题

SignatureDoesNotMatch 是密码错了吗?

大概率是"参与签名的要素不一致"而不是密码错:AccessKeySecret 复制不完整、时钟偏差过大(签名带时间戳,服务器时间偏差 15 分钟以上即失败)、上传时改动了已签名的请求头。三项逐一核对。

预签名 URL 过期了怎么办?

签名 URL 有时效(逐日 AI 生成的下载链接默认有时限),过期重新生成即可。给客户的交付链接建议设置较长时效(24 小时)或改走 CDN 私有部署。

三步,出你的第一条片

套用一个案例模板,替换成你的内容——注册后即可进入工作台逐段生成、合成导出。

反馈建议