阿里云对象存储(OSS, Object Storage Service)(https://www.aliyun.com/product/oss)是阿里云提供的海量、安全、低成本、高持久的云存储服务。它适合存放图片、视频、日志、备份数据等非结构化数据。
以下是 OSS 的核心概念、使用步骤和常见场景指南,帮助您快速上手:
📦 一、先搞懂三个核心概念
在使用前,您需要理解 OSS 的层级结构,类似于电脑的文件夹:
- Bucket(存储空间):最外层容器,用于存储文件的集合。全局唯一命名(如
my-company-images)。 - Object(文件/对象):实际上传的文件,包含文件名和内容。
- Region(地域):Bucket 所在的物理位置(如
华东1-杭州、华北2-北京)。选择离用户最近的地域可降低延迟。
🚀 二、新手入门五步走
第 1 步:创建 Bucket
- 登录 阿里云控制台。
- 搜索并进入对象存储 OSS。
- 点击创建 Bucket,填写名称(需符合规范,只能小写字母、数字和短横线),选择地域和存储类型(标准型适合频繁访问,低频型适合偶尔访问,归档型适合长期备份)。
第 2 步:设置权限(关键!)
在 Bucket 详情页找到权限管理->读写权限 (ACL):
- 私有:只有拥有密钥的人能读写(默认推荐,安全性最高)。
- 公共读:任何人可以读取,但只有你有权限写入。适合存放公开的图片、静态网页资源。
- 公共读写:极不推荐,任何人都可上传或删除你的文件。
第 3 步:获取访问凭证(AccessKey)
为了通过代码或工具上传文件,你需要“钥匙”:
- 进入 RAM 访问控制,创建子用户。
- 赋予该用户
AliyunOSSFullAccess权限。 - 生成AccessKey ID和AccessKey Secret。⚠️注意:请妥善保管,不要泄露到前端代码或公开仓库中。
第 4 步:上传文件
有多种方式,根据您的需求选择:
- 简单上传(控制台):直接在网页界面拖拽上传,适合少量文件测试。
- SDK 上传(代码实现):使用 Python、Java、Go 等语言的 SDK 编写程序上传。这是生产环境最常用的方式。
- 在线工具上传:使用阿里云提供的
ossbrowser图形化工具,类似 FTP 客户端。
第 5 步:访问文件
上传成功后,系统会生成一个 URL。
- 格式通常为:
http://<BucketName>.oss-<Region>.aliyuncs.com/<ObjectName> - 如果权限是“公共读”,您可以直接复制这个链接发给别人查看。
💻 三、开发者常用操作示例(Python SDK)
假设您已安装pip install oss2,以下是一个简单的上传和下载示例:
import oss2 # 1. 初始化配置 auth = oss2.Auth('您的AccessKeyID', '您的AccessKeySecret') # endpoint 例如: oss-cn-hangzhou.aliyuncs.com bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', '您的Bucket名称') # 2. 上传文件 (Put Object) # bucket.put_object('远程文件名.jpg', open('本地路径/local_file.jpg', 'rb')) print("上传成功") # 3. 下载文件 (Get Object) # bucket.get_object_to_file('远程文件名.jpg', '本地保存路径/save_file.jpg') print("下载成功") # 4. 获取文件访问 URL (签名 URL,有效期1小时,即使私有权限也可临时分享) url = bucket.sign_url('GET', '远程文件名.jpg', 60) print(f"临时访问链接: {url}")🏢 四、典型应用场景
| 场景 | 建议配置 | 说明 |
|---|---|---|
| 网站静态资源托管 | Bucket 设为公共读+ 绑定自定义域名 | 将 CSS、JS、图片存 OSS,减轻服务器压力,提升加载速度。 |
| APP/小程序头像存储 | 私有+ 后端生成签名 URL | 用户上传后,后端返回有时效性的 URL 给前端展示,防止盗链。 |
| 数据备份与归档 | 低频访问或归档存储 | 适合数据库备份、日志归档,成本极低,但取回需要解冻时间。 |
| 大数据计算输入源 | 标准存储 | 作为 MaxCompute、DataWorks 等数据分析工具的原始数据湖。 |
⚠️ 五、避坑与安全建议
- 防盗链:如果 Bucket 是公共读,建议在跨域资源共享 (CORS)和Referer 白名单中设置允许的域名,防止其他网站恶意引用你的流量产生高额费用。
- 生命周期规则 (Lifecycle):设置自动清理策略。例如:“上传超过 90 天的日志文件自动删除”或“30 天后转为低频存储”,以节省成本。
- 版本控制:开启后,每次覆盖或删除文件都会保留旧版本,防止误删恢复数据。
- 不要在前端硬编码 AccessKey:永远通过后端服务器中转上传,或使用 STS 临时令牌机制,确保密钥安全。