OSS文件上传和下载失败的排查方法
概述
本文主要介绍阿里云对象存储OSS文件上传和下载失败的排查方法。
详细信息
当您访问OSS出错时,OSS会返回3xx、4xx或者5xx的HTTP状态码,您可以参见通过HTTP状态码或者OSS错误码排查,通过状态码进行排查处理。在使用OSS SDK上传或下载文件时,如发生报错,请参见OSS SDK使用中常见问题进行处理。
OSS文件上传失败
当上传文件失败时,请参见以下操作进行排查处理:
- 检查本地与OSS的网络是否存在异常。若存在网络故障,请使用ping命令测试与OSS的网络连通性,确保网络正常后再进行下一步排查。
- 检查上传文件的大小是否超过限制。如要上传超过5GB的文件,请参见如何上传大文件到OSS进行文件上传。
-
通过OSS控制台上传、简单上传、表单上传、追加上传的方式上传单个文件,文件的大小不能超过5GB。
-
通过分片上传的方式上传单个文件,文件的大小不能超过48.8TB。
-
- 检查当前上传文件的账号是否有上传文件的权限。若为RAM用户,请执行以下操作,检查账号是否拥有Bucket上传文件的权限。若无权限,请参见通过Bucket Policy授权用户访问指定资源,进行授权。
-
登录访问控制管理控制台,单击用户管理,选择对应的RAM用户。
-
单击
查看该用户的权限,确认是否已经赋予当前用户Bucket或Object的操作权限。
-
- 请根据当前上传文件的环境,检查配置是否正常。
- 若您是使用OSS SDK上传失败,请检查Endpoint地址、Bucket、Object、AccessKeyID和AccessKeySecret是否正常,OSS SDK上传文件的方式请参见更多信息。
- 检查OSS Bucket的Endpoint地址是否正确。
-
请确保使用正确的Endpoint地址访问Bucket。例如Bucket所在地域为
oss-cn-hangzhou
,则外网Endpoint为oss-cn-hangzhou.aliyuncs.com
。有关Endpoint的更多信息,请参见OSS访问域名使用规则。 - 确认请求的Endpoint地址与Bucket实际的Endpoint地址一致。如果需要访问青岛和杭州两个节点的Bucket,则创建多个ossclient,定义Endpoint时,将青岛和杭州地域的地址都添加进去。各地域及不同网络连接方式下的Endpoint信息请参见Endpoint。
-
- 检查AccessKeyID和AccessKeySecret的正确。
确保代码中使用的AccessKey和AccessKeySecret正确。如果当前账号为RAM用户,请确保使用的AccessKey和AccessKeySecret为RAM的。 - 请确保Bucket与Object命名合法有效且符合要求,详情请参见Bucket和Object命名规范。
- Bucket的命名规范:只能包括小写字母、数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
- Object的命名规范:使用UTF-8编码,长度必须在1-1023字节之间,不能以“/”或者“\”字符开头。
- 检查OSS Bucket的Endpoint地址是否正确。
- 若您是使用OSS常用工具上传失败,首先请参见OSS常用工具汇总,查看您所使用的工具的限制条件,根据您的使用场景,重新选择使用工具,帮助您解决OSS上传慢或者偶尔不能上传的情况。建议您先使用ossutil工具进行上传,具体请参见命令行工具ossutil。
- 若您是使用OSS SDK上传失败,请检查Endpoint地址、Bucket、Object、AccessKeyID和AccessKeySecret是否正常,OSS SDK上传文件的方式请参见更多信息。
- 在进行文件上传时如遇到以下对应问题,请按照对应的解决方案进行处理。
OSS文件下载失败
当下载文件失败时,请参见以下操作进行排查处理:
- 检查本地与OSS的网络是否存在异常。若存在网络故障,请解决网络故障,确保网络正常后再进行下一步排查。
- 检查下载文件的数量是否超过限制。通过OSS控制台可一次批量下载最多100个文件。
- 请参见OSS文件上传失败中的第3步和第4步,进行排查配置是否正常。
- 您可以使用以下OSS工具通过断点续传方式下载:
- 在使用OSS文件下载相关功能时,如果遇到以下问题,可参考其对应的案例进行解决。
更多信息
OSS SDK上传文件主要包括以下几种上传方式,请根据不同上传方式的特性,选择合理的上传方式进行重新配置。
- 简单上传:适用于一次HTTP请求交互即可完成上传的场景,例如小文件(小于5GB)的上传。
- 表单上传:是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。
- 分片上传和断点续传:当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败,重试必须从文件起始位置上传。针对这种情况,您可以使用分片上传来达到断点续传的效果。相对于其他的上传方式,分片上传适用于以下场景:
- 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。
- 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。
- 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。
- 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。
- 追加上传:追加上传指的是使用OSS API中的AppendObject在已上传的Appendable Object类型文件后面直接追加内容。
- 授权给第三方上传:使用这个功能,每个客户端可以直接将文件上传到OSS而不是通过服务器端转发,节省了自建服务器的成本,并且充分利用了OSS的海量数据处理能力,无需考虑带宽和并发限制等,可以让客户专心于业务处理。
- RTMP推流上传:OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS,推送到OSS的音视频数据可以点播播放。在对延迟不敏感的应用场景,也可以做直播用途。
相关文档
适用于
- 对象存储OSS