本文介绍OSS返回404错误的原因和解决方案。

SymlinkTargetNotExist

  • 错误信息:The symlink target object does not exist.
  • 问题原因:
    • Object命名不符合规范。
    • 软链接指向的Object不存在。
  • 解决方案:
    • 检查并确保Object命名符合规范。

      Object命名规范如下:

      • 使用UTF-8编码。
      • 长度在1~1023字节之间。
      • 不是以正斜线(/)或者反斜线(\)开头。
    • 如果目标Object为软链接,则确保软链接指向的Object已存在。

NoSuchBucket

  • 错误信息:The specified bucket does not exist.
  • 问题原因:Bucket命名不符合规范。
  • 解决方案:检查并确保Bucket命名符合规范。
    Bucket命名规范如下:
    • 只包含小写字母、数字和短划线(-)。
    • 以小写字母或者数字开头和结尾。
    • 长度在3~63字节之间。

NoSuchKey

  • 错误信息:The specified key does not exist.
  • 问题原因:

    客户端显示上传成功,但下载提示404。

    • Object命名不符合规范。
    • 触发生命周期管理规则,Object被删除。

    文件之前一直存在,访问突然提示404。

    • Object被其他具有合法权限的用户通过OSS控制台、OSS客户端或API等方式删除了。
    • 目标Bucket与其他Bucket存在跨区域复制关系,其他Bucket中执行的删除操作被同步到目标Bucket中,此时Object也会被删除。
  • 解决方案:
    • 确保请求的Object命名符合规范。
      Object命名规范如下:
      • 使用UTF-8编码。
      • 长度在1~1023字节之间。
      • 不是以正斜线(/)或者反斜线(\)开头。
    • 检查OSS设置的生命周期规则,确认Object未触发删除规则。详情请参见设置生命周期规则
    • 确认其他具有合法权限的用户未删除请求的Object。
    • 检查Bucket未与其他Bucket存在跨区域的复制关系。如果存在该关系,检查源Bucket中是否存在您请求的Object。

NoSuchUpload

  • 错误信息:The specified upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed.
  • 问题原因:
    • 上传成功后未收到OSS返回的requestId,即实际未上传成功。
    • 分片上传或者断点续传时,部分分片上传成功,但最终未完成上传。
  • 解决方案:
    • 如果是上传Object资源后访问404,确认上传后收到返回的requestId。
    • 如果是分片上传或断点续传,以调用CompleteMultipartUpload接口返回的HTTP状态码200以及requestId为准。详情请参见InitiateMultipartUpload