一、开通OSS服务与前期准备
要上手阿里云对象存储OSS,第一步当然是注册账号、开通服务。这个过程本身不复杂,但有几个关键细节值得重点关注。

1.1 账号注册与实名认证
直接前往阿里云官方网站,用手机号或者电子邮箱注册一个账号即可。注册完成后,务必完成实名认证流程,个人身份或企业资质实名认证都可以。这是使用绝大多数阿里云产品的基础前提,未实名的账号在功能上会受到限制,这一点需要提前规划好。
1.2 开通OSS服务
登录阿里云管理控制台,在产品与服务的列表中查找“对象存储 OSS”。首次进入时,系统会引导您开通服务,按照页面提示操作即可。新用户通常可以享受一定额度的免费试用资源,具体详情可留意官网的优惠活动页面。
成功登录控制台后,就可以开始后续操作了。
二、创建Bucket(存储空间)
Bucket 是 OSS 中用于存放数据的容器,可以把它理解成文件系统的根目录。创建时涉及的参数选项,会直接影响后续的使用体验和成本支出。
2.1 创建入口与命名规范
在 OSS 控制台左侧导航栏中点击“Bucket 列表”,然后选择“创建 Bucket”。Bucket 的名称要求全局唯一——在整个阿里云范围内不能与其他用户的 Bucket 同名。命名规则:仅支持小写字母、数字和短横线(-),推荐使用“项目名-环境-用途”的格式,例如 myapp-prod-assets。
2.2 地域选择
地域(Region)的选择非常关键。基本原则是“就近原则”:假如您的应用服务器部署在华东2(上海),那么 Bucket 也建议选择华东2(上海)。相同地域内的阿里云产品(例如 ECS、ACK)访问 OSS,可以使用内网 Endpoint,完全免除流量费用。如果选错了地域,虽然可以通过传输加速等功能进行补救,但会产生额外的费用支出。
2.3 存储类型
OSS 提供了多种存储类型供选择。最常用的是“标准存储”,适合频繁访问的热点数据。如果您存储的是访问频率较低的数据,比如备份归档文件,可以考虑“低频访问”或“归档存储”,这样可以显著节省存储成本。存储类型在创建后,还可以通过生命周期规则进行转换,但转换操作本身也可能产生一定费用。
2.4 读写权限(ACL)
强烈建议选择“私有”(Private)权限。私有权限下,所有文件的访问都必须经过身份验证,默认情况下外部无法直接访问。只有在明确需要公开访问的场景下,例如静态网站托管,再考虑设置为“公共读”,并且需要配合其他安全措施一同使用。特别提醒:从2025年10月13日起,OSS 开始分阶段为所有通过 API、SDK 或 ossutil 创建的新 Bucket 默认启用“阻止公共访问”。也就是说,即使您尝试将 Bucket 设置为公共读,默认情况下也会被阻止,需要在创建后手动关闭这个限制。
2.5 版本控制
版本控制功能可以记录每次文件覆盖和删除的操作,方便数据回滚恢复。对于重要的生产数据,建议开启此功能。不过需要注意,开启版本控制后,历史版本也会持续产生计费,需要配合生命周期规则,定期清理那些过期的版本。
创建完成后,请记下以下几个关键信息:Bucket 名称、地域(Region)、Endpoint(地域对应的服务访问地址)。后续配置 SDK 时都会用到这些信息。
三、文件上传:多种方式任你选
OSS 支持多种文件上传方式,从最简单的控制台拖拽,到自动化的 CI/CD 集成,覆盖了从个人开发者到企业级应用的各种场景需求。
3.1 控制台上传(适合小项目与测试)
进入 Bucket 详情页的“文件管理”页面,可以直接把本地文件或文件夹拖拽到上传区域。这种方式适合小规模测试或临时文件共享,操作非常直观,不需要安装任何额外工具。
3.2 ossutil命令行工具(推荐自动化场景)
ossutil 是阿里云官方的命令行工具,支持批量上传、增量同步、断点续传等高级功能。
安装步骤(macOS/Linux):
配置 AccessKey:
增量同步本地目录到 Bucket:
这里的 --delete 表示删除 OSS 中本地已经不存在的文件,--jobs 10 表示并发上传的数量。使用 ossutil 可以轻松地将 CI/CD 流水线中构建好的产物,自动部署到 OSS 上。
3.3 Python SDK上传
Python SDK 是使用最广泛的 OSS 接入方式之一。官方推荐使用 V2 版本,要求 Python 3.8 及以上版本。
安装 SDK:
配置环境变量(以 Linux/macOS 为例):
上传文件的示例代码:
3.4 Ja va SDK上传
Ja va SDK V2 要求 Ja va 8 及以上版本。在 Ma ven 项目中添加依赖:
上传文件的示例代码:
3.5 Node.js SDK上传
前端或者 Node.js 开发者,可以使用官方提供的 Node.js SDK。
安装:
上传示例:
四、访问文件:从私有到公开的多种方式
文件上传到 OSS 后,如何访问取决于 Bucket 的权限设置以及您的具体业务需求。
4.1 私有文件的签名URL访问
对于私有 Bucket 中的文件,无法直接通过 URL 进行访问。您需要生成一个带有有效期的签名 URL(预签名 URL),然后将这个 URL 分享给有权限的用户。签名 URL 的有效期可以精确到秒,过期后自动失效,安全性比较高。
Python SDK 生成签名 URL 示例:
这里需要留意:如果使用的是 STS 临时凭证生成的签名 URL,有效时长取两者中较短的那个。
4.2 自定义域名绑定
在生产环境下,通常不建议直接使用 OSS 提供的默认域名对外提供服务。更好的做法是绑定您自己的域名。
绑定步骤:
在 OSS 控制台的 Bucket 详情页找到“域名管理”,添加自定义域名(比如static.yourdomain.com)在 DNS 服务商那里添加一条 CNAME 记录,将自定义域名指向 Bucket 的外网 Endpoint如果需要 HTTPS 访问,还需要上传 SSL 证书另外,从2025年3月20日起,新开通 OSS 服务的用户在中国内地地域的 Bucket,将无法通过默认外网域名调用数据操作类 API,必须使用自定义域名才能访问。这意味着绑定自定义域名正在从“建议”变为“必需”。
4.3 静态网站托管
OSS 支持直接将 Bucket 配置为静态网站,省去维护 Web 服务器的麻烦。配置步骤如下:
将 Bucket 的读写权限设置为“公共读”在“基础设置”中找到“静态网站托管”设置默认首页为index.html,默认404页也设置为 index.html(适合 SPA 单页应用)配合阿里云 CDN 一起使用,可以将全国范围内的访问延迟控制在 50ms 以内。
五、安全管理:保护你的数据不被滥用
OSS 的安全配置涉及多个层面,从身份认证到访问控制,从跨域配置到防盗链,每一个环节都不容忽视。
5.1 RAM子账号与最小权限原则
绝对不要在代码中硬编码主账号的 AccessKey。正确的做法是创建 RAM 子账号,只授予必要的权限。
创建 RAM 子账号的步骤:
进入“访问控制 RAM”控制台点击“用户” → “创建用户”填写登录名称,勾选“OpenAPI 调用访问”创建 AccessKey,妥善保存好 AccessKeyId 和 AccessKeySecret为 RAM 用户授权,至少授予目标 Bucket 的操作权限如果只需要上传权限,可以自定义一个策略,而不是直接授予 AliyunOSSFullAccess。最小权限策略模板示例如下:
5.2 Bucket Policy与访问控制
Bucket Policy 是配置在 Bucket 上的授权策略,支持更精细的访问控制——可以指定允许或拒绝特定 RAM 用户、其他阿里云账号甚至匿名用户的访问,还能设置 IP 地址、VPC、时间等条件限制。
5.3 CORS跨域配置
如果您的 Web 应用需要通过浏览器直接上传或访问 OSS 资源,必须配置 CORS 规则。在 Bucket 的“数据安全” → “跨域设置”中创建规则:
来源(AllowedOrigin):填写您的前端域名,例如https://app.yourdomain.com,测试阶段可以暂时设为 *允许 Methods:根据实际需要勾选 GET、POST、PUT、DELETE 等允许 Headers:可以设为 *暴露 Headers:建议设置 ETag 和 x-oss-request-id5.4 防盗链(Referer白名单)
为了防止其他网站盗用您的 OSS 资源链接,可以开启防盗链功能。在 Bucket 的“基础设置” → “防盗链”中:
启用防盗链在 Referer 白名单中添加允许访问的域名(每行一个)选择是否允许空 Referer 访问不过需要注意,防盗链只能防止普通浏览器场景下的盗用,无法防止恶意程序通过伪造 Referer 头进行访问。
5.5 监控与报警
通过云监控服务可以为 OSS 创建报警规则。当监控指标(例如存储量、外网流出流量、请求次数)达到预设阈值时,系统会自动发送通知。建议至少配置以下报警:
外网流出流量突增报警——防止流量盗刷存储量异常增长报警——防止被恶意上传请求错误率报警——及时发现问题六、成本优化:用最少的钱存最多的数据
OSS 采用按量计费模式,主要费用来自三个方面:存储费用、外网下行流量费用和 API 请求次数。搞清楚这三者的构成,是优化成本的前提。
6.1 利用内网访问免流量
这是最重要的一条成本优化原则:如果您的应用部署在阿里云 ECS、ACK 等计算服务上,务必使用内网 Endpoint 来访问 OSS。内网流量完全免费,而外网流量是按 GB 计费的。确保 Bucket 和您使用的计算服务在同一个地域,然后在代码中使用 oss- 格式的 Endpoint。
6.2 生命周期管理:自动转冷存储
生命周期管理是 OSS 最强大的成本优化工具之一。您可以定义规则,让 OSS 自动将超过一定时间未被访问的文件,从标准存储转为低频访问存储,再转为归档存储,甚至直接删除。
典型场景:
日志文件:30天后转低频,180天后转归档,365天后删除用户上传的图片:90天后转低频备份文件:直接存入归档存储生命周期规则创建后的24小时内,OSS 会加载规则。加载完成后,OSS 会在固定的时间周期(通常是次日 UTC 时间0点,也就是北京时间8点后)扫描并执行符合条件的规则。
成本对比参考:将数据从标准存储转为低频访问存储,大约能节省40%的存储费用;转为归档存储,大约能节省70%。
6.3 选择正确的存储类型
OSS 的五种存储类型各有适用场景:
标准存储:高频访问的热数据,单文件月访问大于1次低频访问:访问频率较低,但需要实时读取的温数据,单文件月访问不到1次归档存储:需要长期保存,但访问概率极低的数据,解冻时间大约1分钟冷归档存储:更低成本的长期归档深度冷归档:最低成本的极长期存储6.4 监控流量防止盗刷
外网流出流量是 OSS 成本中波动最大的一项。建议:
定期查看 OSS 用量报表,关注外网流量变化趋势如果发现流量异常增长,检查一下是否有资源被恶意盗链可以考虑开启“请求者付费模式”,让访问者来承担流量费用6.5 资源包与预付费
对于用量比较稳定的场景,购买资源包(存储包、下行流量包、SCU)可以进一步降低成本。资源包按年或按月购买,单价通常比按量计费便宜不少。
七、常见问题解答
问题1:OSS的AccessKey在哪里获取?
AccessKey(AK/SK)在 RAM 访问控制台中创建。进入“访问控制 RAM” → “用户” → 创建 RAM 用户并勾选“OpenAPI 调用访问”,然后在用户详情页创建 AccessKey。AccessKeySecret 只在创建时显示一次,请务必妥善保管。
问题2:为什么我上传的文件无法通过URL直接访问?
最常见的原因是 Bucket 的读写权限设置为“私有”。私有 Bucket 中的文件必须通过签名 URL 才能访问。如果确实需要公开访问,可以将 Bucket 权限改为“公共读”,或者针对单个文件设置公共读权限。
问题3:如何降低OSS的流量费用?
最有效的办法是确保您的应用服务器(例如 ECS)和 OSS 在同一个地域,使用内网 Endpoint 进行访问,内网流量完全免费。其次,配置生命周期规则,将冷数据转为低频或归档存储,减少不必要的存储费用。如果资源经常被外网访问,考虑接入 CDN 加速,CDN 的流量单价通常比 OSS 直接外网流出便宜不少。
问题4:OSS支持哪些编程语言的SDK?
OSS 官方提供的主流语言 SDK 包括:Python、Ja va、Node.js、Go、C、C++、Ruby、PHP、Android、iOS 等。几乎所有的主流编程语言都能方便地接入 OSS。
问题5:Bucket创建后可以更改地域吗?
不可以。Bucket 的地域在创建时就确定了,一旦创建就无法更改。如果选错了地域,只能删除 Bucket 重新创建(需要先清空所有文件),或者使用 OSS 的传输加速功能跨地域访问(会产生额外费用)。因此创建 Bucket 时,地域选择一定要慎重。
问题6:什么是OSS的Endpoint?如何选择?
Endpoint 是 OSS 服务的访问地址。外网 Endpoint 的格式是 oss-,内网 Endpoint 的格式是 oss-。如果您的应用部署在阿里云上,并且与 Bucket 在同一个地域,务必使用内网 Endpoint,这样可以节省流量费用。
