阿里云oss上传时,Bucket权限和代码里常踩的3个坑

不少项目会把图片、视频和日志放到阿里云OSS上。容量可以按需扩展,计费按量,用起来省心。真正动手写阿里云oss上传的代码时,问题通常出在三个地方:Bucket权限没配对,大文件传到一半超时,浏览器直传时报跨域错误。这篇文章用一个电商商品图上传的例子,把常见的上传方式和配置细节过一遍。

阿里云oss上传时,Bucket权限和代码里常踩的3个坑

一、上传前的准备

下面三步做完,后面的代码才能顺利跑通。

  1. 创建Bucket:在OSS控制台新建Bucket,地域选离用户最近的,比如华东1(杭州)。读写权限保持私有,访问靠签名或授权来控制,不要图省事开成公共读。
  2. 创建RAM子账号:在RAM控制台新建专用子账号,只授予目标Bucket的读写权限。代码里直接用主账号的AccessKey,等于把整个账号交出去,一旦泄露,影响范围很难收住。
  3. 记下Endpoint:格式通常是 https://oss-cn-hangzhou.aliyuncs.com。后面的所有配置都要和Bucket所在的地域对得上。

二、五种常见的上传方式

1. 控制台手动上传

适合临时传几个文件,比如补一批素材或者排查问题。进入Bucket的文件管理页面点击上传即可。文件较大时,控制台会自动切换为分片上传,不需要额外设置。

2. 使用Python SDK简单上传

后端服务最常见的写法。下面的例子使用官方的oss2库,AccessKey从环境变量读取,代码里不留明文:

import os
import oss2

auth = oss2.Auth(os.environ['OSS_ACCESS_KEY_ID'],
                 os.environ['OSS_ACCESS_KEY_SECRET'])
bucket = oss2.Bucket(auth,
                     'https://oss-cn-hangzhou.aliyuncs.com',
                     'your-bucket-name')

# 上传本地文件,第一个参数为OSS中的对象路径
result = bucket.put_object_from_file('products/1001/main.jpg',
                                     'local/main.jpg')
print(result.status)  # 返回200表示成功

第一个参数是OSS中的对象路径,第二个是本地文件路径。像 products/1001/ 这样的前缀并不会真的创建目录,它只是对象名的一部分,控制台会按前缀把它显示成文件夹。返回状态码200即表示成功。

3. 大文件分片断点续传

单次PUT请求的上限是5GB,超过这个大小就该用分片。oss2提供的resumable_upload会自动切片,网络中断后从已完成的分片继续,视频和备份包这类大文件用它最省心。分片大小一般在1MB到10MB之间。太小,请求次数多,整体反而慢;太大,一片失败就得整片重传。另外,分片数上限是10000个,分片大小要和文件大小一起算,别让大文件撞到这个上限。

4. 前端直传(预签名URL)

让浏览器直接把文件传到OSS,应用服务器只负责签发一个有时效的预签名URL,不再经手文件内容。前端拿到URL后用PUT方法上传即可。示例中的商品图上传就是这样改的,服务器带宽占用下降了七成以上。

5. 使用STS临时凭证

上传端是移动App或第三方客户端时,不要下发长期有效的AccessKey。一旦客户端被反编译或者凭证泄露,风险很大。改用STS获取有效期约一小时的临时凭证,再把权限限制在具体的路径前缀上,泄露后的影响会小很多。

三、一个真实案例的复盘

某中型电商团队最初用的是方式二,商品图全部经由应用服务器中转。大促期间,服务器出口带宽被打满,上传接口的平均响应时间从300毫秒涨到4秒,用户看到的就是一直转圈。

后来他们把商品图改成预签名直传,上传请求不再经过业务服务器,接口响应恢复正常。视频素材则换成了分片断点续传,弱网环境下的失败率从15%降到了不足2%。直传之前,权限和跨域规则要先配好,这一步省不得。

四、三个常见的坑

  • 跨域报错:浏览器直传时,请求会先发一个OPTIONS预检。需要在Bucket的跨域设置里添加允许的来源、PUT方法和Content-Type请求头,否则预检不通过,真正的上传请求根本发不出去。本地调试时来源可以写成 http://localhost:端口,上线前再收紧为正式域名。
  • Endpoint选错地域:Bucket在杭州,代码里却填了北京的Endpoint,返回的错误往往是403或404,信息含糊,很容易被带去排查签名和权限。遇到这类报错,先核对地域,这一步最省时间。
  • 对象路径设计:所有文件堆在同一层目录,后期查找和清理都很麻烦。按业务和日期分层,比如 products/年月日/,之后配置生命周期规则时也能按前缀精准匹配。

五、怎么选上传方式

选方式的依据是文件大小、上传端和安全要求。小文件由后端直传就够用;大文件用分片续传;浏览器和移动端场景优先用预签名URL或STS临时凭证,别把长期AccessKey放到客户端。动手前把子账号权限、Endpoint和跨域规则核对一遍,大部分报错都能提前避开。

赞 (0)
阿里云yum源怎么换?CentOS服务器实操记录
上一篇 2026年10月31日 下午7:32
阿里云专有云适合哪些企业?私有化部署怎么选
下一篇 2026年10月31日 下午7:32

相关推荐

  • 阿里云区块链落地要看哪些场景和成本

    几年前,区块链还主要出现在行业峰会的演讲里。现在它更像一种基础设施,跟数据库、消息队列放在一起看,要求稳定、好运维、能审计。企业关心的问题也跟着变了:数据上链以后能不能信,多方协作顺不顺,业务高峰扛不扛得住,出了问题能不能快速找到原因。 阿里云区块链服务(BaaS)就是为这类需求准备的云上产品。节点部署、网络管理、证书体系、监控告警这些琐碎的事交给平台,业务…

    2026年10月31日
  • 阿里云免费企业邮箱怎么开通?小团队建邮箱要注意什么

    很多小团队和初创公司对外发报价单、合同和项目资料时,还是用个人邮箱。能用,但看着不太像一家公司,资料也容易散落在各人的账号里。阿里云免费企业邮箱门槛低,用自己的域名就能搭起一套像样的邮箱体系,适合人不多、对外沟通又比较频繁的团队。 小团队为什么要用企业邮箱 个人邮箱的问题,通常在三个地方露出来。客户收到一个通用后缀的邮件,第一印象就打了折扣。员工一离职,历史…

    2026年10月31日
  • 阿里云学生机怎么选?建站前先看这几点

    刚开始学编程时,一台随时能登录、能把项目跑起来的服务器,往往比一台高配电脑更实用。阿里云学生机就是为这类需求准备的入门选项。下面从适合谁用、选购时看什么,到两个实际案例,把这件事讲清楚。 阿里云学生机是什么 阿里云学生机是阿里云面向在校学生推出的云服务器优惠产品,一般需要通过学生认证才能购买,价格通常比常规云服务器低。它本质上仍是一台可以远程登录的 Linu…

    2026年10月31日
  • 阿里云重置系统要注意什么?数据和镜像先备份

    在阿里云上,重置系统一般指给云服务器 ECS 更换操作系统,或者把系统盘恢复到初始状态。操作完成后,系统盘上的软件、配置和文件都会被清空。动手之前,先把这一点想清楚。 很多人会把“重置系统”和“重置密码”搞混。重置密码只修改登录凭证,磁盘上的数据不受影响。重置系统会重新安装操作系统,系统盘上的数据全部丢失。如果只是忘了登录密码,直接用重置密码的功能就行,不需…

    2026年10月31日
  • 阿里智能云路由跨地域配置,哪些参数会影响稳定性?

    跨地域网络出问题,很多时候是路由配置里某一处没对上,链路本身未必有故障。服务器一多,VPC、子网、专线和第三方网络叠在一起,路由规划稍有疏漏,就可能出现某个可用区访问不通,或者跨地域延迟时高时低。这篇文章从实际配置出发,说说哪些参数最容易影响稳定性。 先弄清楚几个组件 阿里云上并没有一个叫“阿里智能云路由”的单一产品。日常说的,通常是一组网络能力:VPC里的…

    2026年10月31日
返回顶部