OSS文件上传和下载失败的排查方法

更新时间: 2023-07-17 10:11:24

概述

本文主要介绍阿里云对象存储OSS文件上传和下载失败的排查方法。

详细信息

当您访问OSS出错时,OSS会返回3xx、4xx或者5xx的HTTP状态码,您可以通过状态码进行排查处理。在使用OSS SDK上传或下载文件时,如发生报错,请参见OSS SDK使用中常见问题

OSS文件上传失败

当上传文件失败时,请参见以下操作进行排查处理:

  1. 检查本地与OSS的网络是否存在异常。若存在网络故障,请使用ping命令测试与OSS的网络连通性,确保网络正常后再进行下一步排查。

  2. 检查上传文件的大小是否超过限制。

    • 通过OSS控制台上传、简单上传、表单上传、追加上传的方式上传单个文件,文件的大小不能超过5 GB。如要上传超过5 GB的文件,请参见如何上传大文件到OSS

    • 通过分片上传的方式上传单个文件,文件的大小不能超过48.8 TB。

  3. 检查当前上传文件的账号是否有上传文件的权限。若为RAM用户,请执行以下操作,检查账号是否拥有Bucket上传文件的权限。若无权限,进行授权。更多信息,请参见通过Bucket Policy授权用户访问指定资源

    1. 登录访问控制管理控制台,选择身份管理>用户,选择对应的RAM用户。

    2. 单击权限管理页签,确认是否已经赋予当前用户Bucket或Object的操作权限。

  4. 请根据当前上传文件的环境,检查配置是否正常。

    • 若您是使用OSS SDK上传失败,请检查Endpoint地址、Bucket、Object、AccessKeyID和AccessKeySecret是否正常。

      1. 检查OSS Bucket的Endpoint地址是否正确。

        • 请确保使用正确的Endpoint地址访问Bucket。例如Bucket所在地域为oss-cn-hangzhou,则外网Endpoint为oss-cn-hangzhou.aliyuncs.com。有关Endpoint的更多信息,请参见OSS访问域名使用规则

        • 确认请求的Endpoint地址与Bucket实际的Endpoint地址一致。如果需要访问青岛和杭州两个节点的Bucket,则创建多个ossclient,定义Endpoint时,将青岛和杭州地域的地址都添加进去。各地域及不同网络连接方式下的Endpoint信息请参见OSS内网域名与VIP网段对照表

      2. 检查AccessKeyID和AccessKeySecret的正确性。 确保代码中使用的AccessKey和AccessKeySecret正确。

      3. 请确保Bucket与Object命名合法有效且符合要求。更多信息,请参见Bucket和Object命名规范

        • Bucket的命名规范:只能包括小写字母、数字和短划线(-),必须以小写字母或者数字开头,长度必须在3~63字节之间。

        • Object的命名规范:使用UTF-8编码,长度必须在1~1023字节之间,不能以/或者\字符开头。

    • 若您是使用OSS常用工具上传失败,首先请参见OSS常用工具汇总,查看您所使用的工具的限制条件,根据您的使用场景,重新选择使用工具,帮助您解决OSS上传慢或者偶尔不能上传的情况。建议您使用ossutil工具进行上传,具体请参见命令行工具ossutil

  5. 在进行文件上传时如遇到以下对应问题,请按照对应的解决方案进行处理。

OSS文件下载失败

当下载文件失败时,请参见以下操作进行排查处理:

  1. 检查本地与OSS的网络是否存在异常。若存在网络故障,请解决网络故障,确保网络正常后再进行下一步排查。

  2. 检查下载文件的数量是否超过限制。通过OSS控制台可一次批量下载最多100个文件。

  3. 请参见OSS上传文件失败中的第3步和第4步,进行排查配置是否正常。

  4. 使用以下OSS工具通过断点续传方式下载:

  5. 在使用OSS文件下载相关功能时,如果遇到以下问题,可参考其对应的案例进行解决。

更多信息

OSS SDK上传文件主要包括以下几种上传方式,请根据不同上传方式的特性,选择合理的上传方式进行重新配置。

  • 简单上传:适用于一次HTTP请求交互即可完成上传的场景,例如小文件(小于5 GB)的上传。

  • 表单上传:是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5 GB。

  • 分片上传和断点续传:当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败,重试必须从文件起始位置上传。针对这种情况,您可以使用分片上传来达到断点续传的效果。相对于其他的上传方式,分片上传适用于以下场景:

    • 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。

    • 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。

    • 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。

    • 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。

  • 追加上传:追加上传指的是使用OSS API中的AppendObject在已上传的Appendable Object类型文件后面直接追加内容。

  • 授权给第三方上传:使用这个功能,每个客户端可以直接将文件上传到OSS而不是通过服务器端转发,节省了自建服务器的成本,并且充分利用了OSS的海量数据处理能力,无需考虑带宽和并发限制等,可以让客户专心于业务处理。

  • RTMP推流上传:OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS,推送到OSS的音视频数据可以点播播放。在对延迟不敏感的应用场景,也可以做直播用途。

相关文档

适用于

  • 对象存储OSS

阿里云首页 对象存储 相关技术圈