- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 权限配置指南
-
工具指南
- OBS工具汇总
-
OBS Browser+
- OBS Browser+简介
- OBS Browser+功能概述
- 下载OBS Browser+
- 安装OBS Browser+
- 登录OBS Browser+
- 桶的基本操作
- 桶的高级配置
- 对象操作
- 任务管理
- 最佳实践
-
常见问题
- 在哪里可以获取AK和SK?
- 如何获取子用户IAM的用户ID?
- 是否可以同时装两个不同站点的OBS Browser+工具?
- OBS Browser+与OBS Browser的不同之处?
- OBS Browser+支持迁移OBS Browser保存的账号信息和任务信息吗?
- 为什么我运行了百万级别的任务后,感觉任务执行较慢?
- 为什么OBS Browser+上显示的桶中对象数量和桶内存储用量与实际的不一致?
- 为什么通过OBS Browser+设置桶ACL后,旧配置中的deliver属性会被覆盖为false?
- 使用账号登录时,界面提示“没有权限登录”
- 使用账号登录时,界面提示“获取用户的Token失败”
- 使用账号登录时,界面提示“账号或者密码错误”
- 定时上传是否采用增量
- 如何永久分享文件或文件夹
- 如何访问指定桶或指定目录
- 目录分享是否支持分享后取消分享
- 是否支持统计文件夹内的文件数目及大小
- 如何解决DNS解析失败
- 是否支持列举特殊字符对象
- 恢复对象任务状态一直是恢复中
- 卸载OBS Browser+
- obsutil
- obsfs(已下线)
- 最佳实践
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 快速入门
-
API
- 桶的基础操作
-
桶的高级配置
- 设置桶策略
- 获取桶策略
- 删除桶策略
- 设置桶ACL
- 获取桶ACL
- 设置桶日志管理配置
- 获取桶日志管理配置
- 设置桶的生命周期配置
- 获取桶的生命周期配置
- 删除桶的生命周期配置
- 设置桶的多版本状态
- 获取桶的多版本状态
- 设置桶默认存储类型
- 获取桶默认存储类型
- 设置桶的跨区域复制配置
- 获取桶的跨区域复制配置
- 删除桶的跨区域复制配置
- 设置桶标签
- 获取桶标签
- 删除桶标签
- 设置桶配额
- 获取桶配额
- 获取桶存量信息
- 设置桶清单
- 获取桶清单
- 列举桶清单
- 删除桶清单
- 设置桶的自定义域名
- 获取桶的自定义域名
- 删除桶的自定义域名
- 设置桶的加密配置
- 获取桶的加密配置
- 删除桶的加密配置
- 设置桶归档对象直读策略
- 获取桶归档对象直读策略
- 删除桶归档对象直读策略
- 设置镜像回源规则
- 获取镜像回源规则
- 删除镜像回源规则
- 设置在线解压策略
- 获取在线解压策略
- 删除在线解压策略
- 配置桶级默认WORM策略
- 获取桶级默认WORM策略
- 静态网站托管
- 对象操作
- 多段操作
- 服务端加密
- 错误码
- 权限和授权项
- 附录
-
SDK参考
- SDK概述
- SDK功能矩阵
-
Python
- 使用前须知(Python SDK)
- Python SDK接口概览
- 使用前准备(Python SDK)
- 下载与安装SDK(Python SDK)
- 快速入门(Python SDK)
- 初始化(Python SDK)
-
桶相关接口(Python SDK)
- 创建桶(Python SDK)
- 获取桶列表(Python SDK)
- 判断桶是否存在(Python SDK)
- 删除桶(Python SDK)
- 列举桶内对象(Python SDK)
- 列举桶内多版本对象(Python SDK)
- 获取桶元数据(Python SDK)
- 获取桶区域位置(Python SDK)
- 获取桶存量信息(Python SDK)
- 设置桶配额(Python SDK)
- 获取桶配额(Python SDK)
- 设置桶存储类型(Python SDK)
- 获取桶存储类型(Python SDK)
- 设置桶ACL(Python SDK)
- 获取桶ACL(Python SDK)
- 设置桶日志管理配置(Python SDK)
- 获取桶日志管理配置(Python SDK)
- 设置桶策略(Python SDK)
- 获取桶策略(Python SDK)
- 删除桶策略(Python SDK)
- 设置桶的生命周期配置(Python SDK)
- 获取桶的生命周期配置(Python SDK)
- 删除桶的生命周期配置(Python SDK)
- 设置桶的Website配置(Python SDK)
- 获取桶的Website配置(Python SDK)
- 删除桶的Website配置(Python SDK)
- 设置桶的多版本状态(Python SDK)
- 获取桶的多版本状态(Python SDK)
- 设置桶的CORS配置(Python SDK)
- 获取桶的CORS配置(Python SDK)
- 删除桶的CORS配置(Python SDK)
- 设置桶标签(Python SDK)
- 获取桶标签(Python SDK)
- 删除桶标签(Python SDK)
-
对象相关接口(Python SDK)
- 上传对象简介(Python SDK)
- 上传对象-文本上传(Python SDK)
- 上传对象-流式上传(Python SDK)
- 上传对象-文件上传(Python SDK)
- 上传对象-追加上传(Python SDK)
- 上传对象-断点续传上传(Python SDK)
- 上传对象-获取上传进度(Python SDK)
- 上传对象-基于表单上传(Python SDK)
- 下载对象简介(Python SDK)
- 下载对象-二进制下载(Python SDK)
- 下载对象-流式下载(Python SDK)
- 下载对象-文件下载(Python SDK)
- 下载对象-范围下载(Python SDK)
- 下载对象-断点续传下载(Python SDK)
- 下载对象-获取下载进度(Python SDK)
- 上传对象-创建文件夹(Python SDK)
- 复制对象(Python SDK)
- 删除对象(Python SDK)
- 批量删除对象(Python SDK)
- 获取对象元数据(Python SDK)
- 修改对象元数据(Python SDK)
- 设置对象ACL(Python SDK)
- 获取对象ACL(Python SDK)
- 恢复归档存储对象(Python SDK)
- 多段相关接口(Python SDK)
- 客户端加密相关接口(Python SDK)
- 其他接口(Python SDK)
- 异常处理(Python SDK)
- 常见问题(Python SDK)
-
Java
- 使用前须知(Java SDK)
- Java SDK接口概览(Java SDK)
- 使用前准备(Java SDK)
- 下载与安装SDK(Java SDK)
- 快速入门(Java SDK)
- 初始化(Java SDK)
- 管理桶(Java SDK)
- 管理并行文件系统(Java SDK)
- 上传对象(Java SDK)
- 下载对象(Java SDK)
- 管理对象(Java SDK)
- 临时授权访问(Java SDK)
- 多版本控制(Java SDK)
- 生命周期管理(Java SDK)
- 跨域资源共享(Java SDK)
- 设置访问日志(Java SDK)
- 静态网站托管(Java SDK)
- 桶标签管理(Java SDK)
- 服务端加密(Java SDK)
- 客户端加密(Java SDK)
- 问题定位(Java SDK)
- 异常处理(Java SDK)
-
常见问题(Java SDK)
- 本文档是否适用于union SDK?
- 如何使对象可以被匿名用户访问?(Java SDK)
- SDK的重试机制是什么?(Java SDK)
- 如何获取桶的静态网站访问地址?(Java SDK)
- 如何获取对象URL?(Java SDK)
- 公网环境下如何提高上传大文件速度?(Java SDK)
- 如何进行分段上传?(Java SDK)
- 如何进行分段下载?(Java SDK)
- 如果桶内已存在同名对象,如何判定覆盖上传成功?(Java SDK)
- 对于加密类型的对象如何使用URL进行下载?(Java SDK)
- 如何生成SSE-C方式的加密密钥(Java SDK)
- 如何获取SecurityToken?(Java SDK)
- SDK是否支持批量上传、下载或复制对象?(Java SDK)
- 如何指定Content-SHA256?(Java SDK)
- 为什么SDK源码中包含acs.amazonaws.com关键字?(Java SDK)
- 如何理解Content-Type(MIME)?(Java SDK)
- 如何获取账号ID和用户ID?
-
Go
- 使用前须知(Go SDK)
- Go SDK接口概览
- 使用前准备(Go SDK)
- 下载与安装SDK(Go SDK)
- 快速入门(Go SDK)
- 初始化(Go SDK)
-
桶相关接口(Go SDK)
- 桶相关接口说明(Go SDK)
- 创建桶(Go SDK)
- 获取桶列表(Go SDK)
- 判断桶是否存在(Go SDK)
- 删除桶(Go SDK)
- 列举桶内对象(Go SDK)
- 列举桶内多版本对象(Go SDK)
- 获取桶元数据(Go SDK)
- 获取桶区域位置(Go SDK)
- 获取桶存量信息(Go SDK)
- 设置桶配额(Go SDK)
- 获取桶配额(Go SDK)
- 设置桶存储类型(Go SDK)
- 获取桶存储类型(Go SDK)
- 设置桶ACL(Go SDK)
- 获取桶ACL(Go SDK)
- 设置桶日志管理配置(Go SDK)
- 获取桶日志管理配置(Go SDK)
- 设置桶策略(Go SDK)
- 获取桶策略(Go SDK)
- 删除桶策略(Go SDK)
- 设置桶的生命周期配置(Go SDK)
- 获取桶的生命周期配置(Go SDK)
- 删除桶的生命周期配置(Go SDK)
- 设置桶的网站配置(Go SDK)
- 获取桶的网站配置(Go SDK)
- 删除桶的网站配置(Go SDK)
- 设置桶的多版本状态(Go SDK)
- 获取桶的多版本状态(Go SDK)
- 设置桶的CORS配置(Go SDK)
- 获取桶的CORS配置(Go SDK)
- 删除桶的CORS配置(Go SDK)
- 设置桶标签(Go SDK)
- 获取桶标签(Go SDK)
- 删除桶标签(Go SDK)
- 设置桶加密配置(Go SDK)
- 获取桶加密配置(Go SDK)
- 删除桶加密配置(Go SDK)
- 设置桶的自定义域名(Go SDK)
- 获取桶的自定义域名(Go SDK)
- 删除桶的自定义域名(Go SDK)
- 并行文件系统相关接口(Go SDK)
- 对象相关接口(Go SDK)
- 多段相关接口(Go SDK)
- 其他接口(Go SDK)
- 单链接限速(Go SDK)
- 异常处理(Go SDK)
- 常见问题(Go SDK)
- Android
- C
- BrowserJS
- .NET
- iOS
- PHP
-
Node.js
- SDK下载(Node.js SDK)
- 示例程序(Node.js SDK)
- 快速入门(Node.js SDK)
- 初始化(Node.js SDK)
-
管理桶(Node.js SDK)
- 创建桶(Node.js SDK)
- 列举桶列表(Node.js SDK)
- 判断桶是否存在(Node.js SDK)
- 删除桶(Node.js SDK)
- 获取桶元数据(Node.js SDK)
- 设置桶ACL(Node.js SDK)
- 获取桶ACL(Node.js SDK)
- 设置桶策略(Node.js SDK)
- 获取桶策略(Node.js SDK)
- 删除桶策略(Node.js SDK)
- 获取桶区域位置(Node.js SDK)
- 获取桶存量信息(Node.js SDK)
- 设置桶配额(Node.js SDK)
- 获取桶配额(Node.js SDK)
- 设置桶存储类别(Node.js SDK)
- 获取桶存储类别(Node.js SDK)
- 上传对象(Node.js SDK)
- 下载对象(Node.js SDK)
- 管理对象(Node.js SDK)
- 多段相关接口(Node.js SDK)
- 临时授权访问(Node.js SDK)
- 多版本控制(Node.js SDK)
- 生命周期管理(Node.js SDK)
- 桶的CORS配置(Node.js SDK)
- 设置访问日志(Node.js SDK)
- 静态网站托管(Node.js SDK)
- 标签管理(Node.js SDK)
- 服务端加密(Node.js SDK)
- 异常处理(Node.js SDK)
- 常见问题(Node.js SDK)
- 视频帮助
-
常见问题
-
产品咨询
- 如何获取OBS的终端节点?
- 我可以在OBS中存储多少数据?
- 我如何选择将数据存储在哪个区域?
- OBS支持使用HTTPS协议访问吗?
- OBS中的数据可以让其他用户访问吗?
- 访问OBS链接提示告警信息的原因和解决办法
- 已删除的数据是否可以恢复?
- 访问OBS域名失败,连接不上CA证书
- 为什么OBS存储的数据丢失了?
- OBS是否支持流量监控?
- OBS上传下载速率的影响因素有哪些?
- 对象存储与SAN存储和NAS存储相比较有什么优势?
- OBS的文件夹与文件系统的文件夹是否一样?
- OBS、EVS和SFS有什么区别?
- 如何判断是否内网访问OBS?
- 我的OBS桶性能是否会受其他用户业务的影响?
- OBS桶概览页数据不一致的原因是什么?
- 境外数据传输回国场景下的丢包和网络稳定性问题
-
计费相关
- 桶内无对象,为什么还会产生存储费用?
- 桶内无对象为什么会产生流量?
- 已购买资源包,为什么仍然扣费?
- 配置CDN回源,并购买回源流量包,计费未走回源流量包
- 账号欠费后已充值,为什么OBS资源仍然不可用?
- 资源包是否必须购买?是否能指定给具体的桶使用?
- 资源包是否支持退订或修改?
- 资源包到期后OBS资源会如何处理?
- 并行文件系统是否支持资源包?
- 请求次数是如何计算的?
- 是否支持购买请求次数?
- OBS存储资源包使用超量后是否会限制对桶的写入
- 当月未用完的资源包用量是否会结转到下个月?
- 哪些资源包会按月更新额度,哪些不会?
- 购买了回源流量包是否还需要购买公网流出流量包?
- OBS账单为什么会出现0.01美元的计费?
- 查询账单时,为什么会有大量的公网流出流量?
- 权限相关
-
桶和对象相关
- 创建桶失败
- 上传对象失败
- 下载对象失败
- 删除桶失败
- 删除对象失败
- 通过URL访问对象失败
- 如何在浏览器中在线预览OBS中的对象?
- 我可以修改对象名称吗?
- 我可以在线编辑OBS中的对象吗?
- 如何获取对象访问路径?
- 我可以修改桶所在的区域吗?
- 如何修改桶所属的企业项目?
- 我可以在桶间进行文件复制吗?
- 我可以在桶间进行文件移动吗?
- 我可以上传同名对象到同一个文件夹中吗?
- OBS是否支持断点续传功能?
- OBS是否支持批量上传文件?
- OBS是否支持批量下载文件?
- OBS是否支持批量删除对象或清空桶?
- 无法搜索到桶中对象或对象不存在返回403
- 使用IE浏览器访问带有中文字符的对象URL地址报错如何处理?
- 为什么配置了跨域访问OBS(CORS)仍然报错?
- 如何查看桶内的文件夹大小?
- 如何上传超过5GB的大对象?
- 数据安全、迁移和备份
- 多版本控制
- 服务端加密
- 跨区域复制
- 域名管理
- 静态网站托管
- 图片处理
- 并行文件系统
- 监控
- OBS控制台使用相关
- OBS Browser+和obsutil等工具相关
- API和SDK等开发者相关
-
产品咨询
- 产品术语
-
更多文档
- 用户指南(阿布扎比区域)
- API参考(阿布扎比区域)
- 工具指南(OBS Browser+)(阿布扎比区域)
- 工具指南(obsfs)(阿布扎比区域)
- 工具指南(obsutil)(阿布扎比区域)
- 并行文件系统特性指南(阿布扎比区域)
-
用户指南 (巴黎区域)
- 产品介绍
- 控制台指南
-
常见问题
-
产品咨询
- 如何获得对象存储服务?
- 如何获取OBS的终端节点?
- 对象存储与SAN存储和NAS存储相比较有什么优势?
- 我可以存储哪种类型的数据?
- 我可以在OBS中存储多少数据?
- OBS是否支持流量监控?
- OBS的文件夹与文件系统的文件夹是否一样?
- OBS的数据存储在哪里?
- OBS支持HTTPS访问吗?
- OBS中的数据可以让其他用户访问吗?
- OBS是否支持断点续传功能?
- OBS是否支持批量上传文件?
- OBS是否支持批量下载文件?
- OBS是否支持批量删除对象?
- OBS上传下载速率的影响因素有哪些?
- 为什么OBS存储的数据丢失了?
- 已删除的数据是否可以恢复?
- 已删除的数据在OBS中是否会有残留?
- 我的OBS桶性能是否会受其他用户业务的影响?
- 权限相关
- 桶和对象相关
- 工具相关
- API和SDK等开发者相关
- 安全性
- 碎片管理
- 多版本控制
- 事件通知
- 生命周期管理
- 静态网站托管
- 跨区域复制
- 服务端加密
-
产品咨询
- 修订记录
- 工具指南(OBS Browser+)(巴黎区域)
- 工具指南(obsfs)(巴黎区域)
- 工具指南(obsutil)(巴黎区域)
- 并行文件系统特性指南(巴黎区域)
- 图片处理特性指南(巴黎地区)
- 权限配置指南(巴黎区域)
-
用户指南(吉隆坡区域)
- 产品介绍
- 控制台指南
-
常见问题
-
产品咨询
- 如何获得对象存储服务?
- 如何获取的终端节点?
- 对象存储与SAN存储和NAS存储相比较有什么优势?
- 我可以存储哪种类型的数据?
- 我可以在OBS中存储多少数据?
- OBS是否支持流量监控?
- OBS的文件夹与文件系统的文件夹是否一样?
- OBS的数据存储在哪里?
- OBS支持HTTPS访问吗?
- OBS中的数据可以让其他用户访问吗?
- OBS是否支持断点续传功能?
- OBS是否支持批量上传文件?
- OBS是否支持批量下载文件?
- OBS是否支持批量删除对象?
- OBS上传下载速率的影响因素有哪些?
- 为什么OBS存储的数据丢失了?
- 已删除的数据是否可以恢复?
- 已删除的数据在OBS中是否会有残留?
- 我的OBS桶性能是否会受其他用户业务的影响?
- 权限相关
- 桶和对象相关
- 工具相关
- API和SDK等开发者相关
- 安全性
- 碎片管理
- 多版本控制
- 标签
- 事件通知
- 生命周期管理
- 静态网站托管
-
产品咨询
- 修订记录
- API参考(吉隆坡区域)
- 工具指南(OBS Browser+)(吉隆坡区域)
- 工具指南(obsfs)(吉隆坡区域)
- 并行文件系统特性指南(吉隆坡区域)
- 最佳实践(吉隆坡区域)
- 用户指南(安卡拉区域)
- API参考(安卡拉区域)
- 并行文件系统特性指南(安卡拉区域)
- 工具指南(OBS Browser+)(安卡拉区域)
- 工具指南(obsutil)(安卡拉区域)
- 操作指南(此文档即将下线,请查阅用户指南)
- 图片处理(此文档即将下线,请查阅用户指南)
- 并行文件系统(此文档即将下线,请查阅用户指南)
- 通用参考
链接复制成功!
生命周期管理
生命周期管理是指通过配置指定的规则,实现在距离对象最后一次更新时间多少天后删除桶中的对象或者转换对象的存储类别。
对象更新时间是指对象的上传时间;对于历史版本对象,对象更新时间是指变为历史版本的时间。

使用场景
- 周期性上传的日志文件,可能只需要保留一个星期或一个月。到期后要删除它们。
- 某些文档在一段时间内经常访问,但是超过一定时间后便可能不再访问了。这些文档需要在一定时间后转化为低频访问存储,归档存储或者删除。
- 为了存档目的而向OBS上传的某些类型的数据,包括数字媒体存档、金融和医疗记录、原始基因组序列数据、长期数据库备份以及为符合监管要求而必须保留的数据。
- 一次性删除桶中的大量文件。手动删除对象费时费力,且有数量限制。在桶中配置一条生命周期管理规则,设置定时删除所有文件即可。
对于上述场景中的对象,您可以定义用于识别这些对象的生命周期管理规则,通过这些规则实现对象的生命周期管理。
自动将某些不再频繁访问的对象转换为低频访问存储或者归档存储、深度归档存储,可以减少您的租赁费用。此处的“转换”表示在不复制原对象的情况下修改对象的存储类别。您可以在对象页面手动修改对象的存储类别,详情请参见上传对象的相关操作,也可以通过配置生命周期规则转换对象的存储类别。
您可以向不受版本控制的桶和启用了版本控制的桶添加生命周期配置。默认情况下,桶不受版本控制,您可以选择启用版本控制。启用了版本控制的桶会维护一个当前对象版本,以及零个或零个以上非当前对象版本。您可以结合使用版本控制和生命周期规则来帮助管理对象的存储成本。通过使用预定义的生命周期配置操作,可以管理当前和非当前对象版本的生命周期。
注意事项
- 单个桶的生命周期规则条数没有限制,但一个桶中所有生命周期规则的XML描述总大小不能超过20KB。
- 您最多可以在一个并行文件系统下配置20条生命周期管理规则,超过20条将提示不支持。
- 创建生命周期规则时,规则名称只能由大写或小写的英文字母、数字、英文句号(.)、下划线(_)和连字符(-)组成。
- 低频访问存储的最低存储时间为30天,归档存储的最低存储时间为90天,深度归档存储的最低存储时间为180天。如果对象经过转换,归档存储时间少于最低存储时间,需要补足剩余天数的存储费用。
- 对象存储类别转换限制:
- 仅支持将标准存储对象转换为低频访问存储对象,低频访问存储对象转换为标准存储对象需手动转换。
- 仅支持将标准存储或低频访问存储对象转换为归档存储对象。如果要将归档存储对象转换为标准存储或低频访问存储对象,需要手动恢复对象,然后手动转换存储类别。
- 仅支持将标准存储、低频访问存储或归档存储对象转换为深度归档存储对象。如果要将深度归档存储对象转换为标准存储、低频访问存储对象或归档存储,需要手动恢复对象,然后手动转换存储类别。
- 归档和深度归档存储不支持多AZ。因此不支持使用生命周期的存储类别转换功能,将多AZ桶或对象的存储类别转化为归档或深度归档存储。
- 对象过期删除:
OBS提供Expiration操作,您可在生命周期配置中指定该操作以使对象过期。此外,对于启用了版本控制的桶,OBS还提供NoncurrentVersionExpiration操作,用于使非当前版本的对象过期。
- 如果桶不受版本控制,则Expiration操作会使OBS永久删除对象。
- 如果桶启用了版本控制(或版本控制已暂停),则Expiration操作会通过将删除标记添加为新的当前版本,在逻辑上删除当前版本。NoncurrentVersionExpiration操作永久删除非当前版本。
- 除OBS桶可以设置生存期外,上传对象时也可以设置生存期。对象的生存期优先于桶的生存期。
在对象的生存期结束后,OBS会将该对象加入删除队列并异步删除它。过期日期和OBS删除对象的日期之间可能会有一段滞后。对象被删除后,不会再向您收取相关的存储时间费用。
要找出对象计划过期的时间,您可以使用GET对象或HEAD对象API。这些API将返回可提供对象过期信息的响应标头。
- 对象更新后,系统会将下一个UTC零点作为对象存储的起始时间开始计算生命周期。生命周期规则执行最长耗时24小时。因此,存储类别的转换以及过期被删除可能会存在延时,且一般不会超过48小时。配置生命周期规则后,如果期间修改了生命周期配置,会重新计算生效时间。
- 修改生命周期配置后,配置不会立即对桶内所有对象生效。例如原有生命周期规则为1天过期删除,2021年1月3日已经开始删除2021年1月1日上传的满足过期条件的对象,如果此时修改生命周期规则为7天过期删除,那么新规则不会对2021年1月1日上传的对象生效,2021年1月1日上传的对象会在2021年1月3日被删除完成,新的规则只会对2021年1月2日及以后上传的对象生效。
生命周期规则
生命周期规则通常包含两个关键要素:
- 策略:生命周期规则匹配的对象。
- 按前缀配置:指定对象名前缀来匹配受约束的对象,则匹配该前缀的对象将受规则影响。
- 配置到整个桶:指定将生命周期管理规则配置到整个桶,则桶内所有对象都将受规则影响。
- 时间:设置对象的转换类别及转换时间。
您可以指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储、归档存储、深度归档存储或者过期并自动被OBS删除。
- 转换为低频访问存储:指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储。
- 转换为归档存储:指定在对象最后一次更新后多少天,受规则影响的对象将转换为归档存储。
- 转换为深度归档存储:指定在对象最后一次更新后多少天,受规则影响的对象将转换为深度归档存储。
- 过期删除:指定在对象最后一次更新后多少天,受规则影响的对象将过期并自动被OBS删除。
时间设置有如下约束限制:- 仅设置一种转换:最少设置1天。
- 设置多种转换:后者时间要比前者时间最少长1天。
例:同时设置“转换为低频访问存储”和“过期删除”,不设置“转换为归档存储”。假设转换为低频访问存储设置为23天,则过期删除时间至少需要设置为24天。
说明:
低频访问存储的最低存储时间为30天,归档存储的最低存储时间为90天,深度归档存储的最低存储时间为180天。如果对象在生命周期管理规则作用下,存储时间少于最低存储时间,需要补足剩余天数的存储费用,请您根据业务情况合理设置时间。
例:上传标准存储的对象后,不进行任何更新。生命周期管理规则的策略为配置到整个桶,3天转换为低频访问存储,4天转换为归档存储,7天过期删除。那么OBS服务将收取3天的标准存储费用,30天低频访问存储费用和90天的归档存储费用。
生命周期配置元素
您可将生命周期配置指定为XML。该配置包含一个或多个生命周期规则。
每个规则由以下内容组成:
- 规则元数据,包含规则ID以及用于指示规则是已启用还是已禁用的状态。如果规则处于禁用状态,OBS将不会执行规则中指定的任何操作。
- 筛选条件,用于标识即将应用规则的对象。您可以使用对象的前缀来指定筛选条件。
- 您希望OBS执行指定操作时的一个或多个转换或过期操作,带有位于对象的生命周期内的日志或时间段。
以下是两个配置示例:
例1:不受版本控制的桶的生命周期配置
默认情况下,您的桶不受版本控制。即桶中的每个对象只有一个版本。
假设您的桶未启用版本控制,且希望在创建30天后将对象名前缀为“documents/”的对象转为低频访问存储对象,创建60天后转为归档存储对象,创建1年之后永久删除。为此,您可以向桶附加以下生命周期配置。该生命周期配置定义的规则包含两个操作(Transition和Expiration),该规则应用于键前缀为“documents”(在Prefix元素中指定)的对象。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>documents/</Prefix> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> <Transition> <Days>30</Days> <StorageClass>WARM</StorageClass> </Transition> <Transition> <Days>60</Days> <StorageClass>COLD</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
例2:启用了版本控制的桶的生命周期配置
您可以选择在桶上启用版本控制。如果您的桶启用了版本控制,则您有一个当前对象版本,以及零个或零个以上非当前版本。详情请参见多版本控制。通过对象版本控制,您可以维护对象版本的历史记录,而通过生命周期,您可以控制各版本存在的时间长度,或是各版本在转换为低频访问存储或归档存储类别以进行长期存档之前保持活动状态的时间长度。
对于启用了版本控制的桶,生命周期配置提供了更多预定义操作,可用于管理非当前对象版本。示例中,该生命周期配置有一个规则,它对键前缀为“logs/”的对象指定两个操作(NoncurrentVersionTransition和NoncurrentVersionExpiration)。NoncurrentVersionTransition操作在对象成为非当前版本30天之后,请求OBS将对象转换为低频访问存储类别,成为非当前版本60天后请求OBS转换为归档存储类别;NoncurrentVersionExpiration操作在对象成为非当前版本180天之后请求OBS永久删除对象。
<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix>logs/</Prefix> <Status>Enabled</Status> <NoncurrentVersionExpiration> <NoncurrentDays>180</NoncurrentDays> </NoncurrentVersionExpiration> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>WARM</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionTransition> <NoncurrentDays>60</NoncurrentDays> <StorageClass>COLD</StorageClass> </NoncurrentVersionTransition> </Rule> </LifecycleConfiguration>
您可以使用预定义NoncurrentVersionTransition和NoncurrentVersionExpiration操作管理桶中的非当前版本。
一般而言,每个生命周期配置规则都由以下内容组成:
- 规则元数据,包括规则ID(<ID>元素)以及用于指示规则是处于启用还是禁用状态(<Status>元素)。如果规则处于禁用状态,则OBS不会执行规则中指定的任何操作。
- 前缀(<Prefix>元素),用于通过键前缀标识要应用规则的对象。
- 您希望OBS对指定对象执行的操作(例如,上面示例中<NoncurrentVersionTransition>和<NoncurrentVersionExpiration>元素)。每个操作都需指定对象生命周期中您希望OBS执行指定操作的日期或时间段。
生命周期配置规则中元素介绍如下:
- ID元素
一个生命周期配置最多可以有1000个规则。ID元素唯一地标识规则。
- Status元素
Status元素值可以是Enabled或Disabled。如果规则处于禁用状态,则OBS不会执行在规则中定义的任何操作。
- Prefix元素
生命周期配置规则可应用于键名称以规则指定的前缀开头的单个对象或多个对象。例如,假设您拥有以下对象:
- Action元素
通过在生命周期配置规则中指定预定义操作,您可以请求OBS在对象的生命周期中执行特定操作。预定义操作包括:Transition、Expiration、NoncurrentVersionTransition和NoncurrentVersionExpiration。这些操作的效果取决于桶的版本控制状态。
- Transition操作
通过将对象的存储类别更改为低频访问存储或归档存储、深度归档存储来存档对象。达到对象生命周期中指定的日期或时间段时,OBS将适用的对象转换为低频访问存储或归档存储、深度归档存储对象。
- 不受版本控制的桶–Transition操作将对象的存储类别设置为低频访问存储或归档存储、深度归档存储。
- 启用了版本控制和暂停了版本控制的桶–Transition操作将当前版本对象的存储类别设置为低频访问存储或归档存储、深度归档存储。此操作不影响对象的非当前版本。
- Expiration操作
此操作可以使规则适用的对象过期。OBS使所有过期的对象不可用。是否永久删除对象取决于桶的版本控制状态。
说明:
Expiration操作不会删除未合并的多段对象。
- 不受版本控制的桶–Expiration操作永久删除对象,删除的对象无法恢复。
- 启用了版本控制的桶–此操作仅应用于当前对象版本,它不影响非当前版本。这种情况下的Expiration操作不会永久删除当前版本。它通过引入删除标记,将当前版本保留为非当前版本。如果当前版本已经带有删除标记,则不执行任何操作。如果当前版本是唯一的对象版本并且带有删除标记,则OBS将删除当前版本。清除删除标记时可能存在一些延迟,因为OBS需确保这是唯一的对象版本。
在不指定版本ID的情况下,对当前版本带删除标记的对象执行GET请求,则OBS将判断为对象已删除,返回404 Object Not Found错误。但是,您可以通过在GET请求中指定版本ID来恢复删除的对象。
例如,您可以设置一个规则,使名为photo.gif的对象创建五天之后过期。如果photo.gif在2016年1月1日上午10:30 UTC创建,则过期规则会在2016年1月7日00:00 UTC(对象创建五天之后)后的某个时间点执行,该时间点不会晚于2016年1月7日23:59 UTC。对于不受版本控制的桶,删除操作会将photo.gif永久删除;而对于启用了版本控制的桶,在过期规则执行之后,photo.gif(版本 111111)仍处于存储状态,可以在需要时进行访问,但是对象的当前版本(版本 4857693)现在带删除标记。原始photo.gif成为非当前版本。有关删除标记工作原理的信息,请参见多版本控制。
已暂停版本控制的桶:桶已暂停版本控制时,过期会导致使用null版本ID创建删除标记。任何现有null版本都会由新的null版本覆盖,与该版本关联的数据无法恢复。
特定于启用版本控制(或已暂停版本控制)的桶的操作
通过Transition和Expiration生命周期操作可以管理对象当前版本的生命周期。通过NoncurrentVersionTransition和NonCurrentVersionExpiration操作可以管理对象非当前(以前)版本的生命周期。
仅当桶是启用版本控制(或已暂停版本控制)的桶时,以下生命周期配置操作才适用。启用版本控制的桶可以有一个对象的许多版本,也就是一个当前版本和零个或零个以上非当前版本。您可以使用这些操作请求OBS对非当前对象版本执行特定操作。这些操作不会影响对象的当前版本。
NoncurrentVersionTransition操作–您可以使用此操作指定非当前版本在转换为WARM或COLD存储类型之前保留为STANDARD存储类型的时间长度。
NoncurrentVersionExpiration操作–您可以使用此操作指定在OBS永久删除非当前对象版本之前保留它们的时间长度。删除的对象无法恢复。
例如,如果您要启用一个为期五天的时段以更正任何意外删除或覆盖,您可以配置一个过期规则,用于在对象成为非当前版本五天之后删除非当前版本的对象。
在2016年1月1日上午10:30 UTC,您创建一个名为photo.gif(版本ID 111111)的对象。在2016年1月2日上午10:30 UTC,您意外删除了photo.gif(版本ID 111111),这会使用新版本ID(如版本ID 4857693)创建一个删除标记。您现在有五天时间可以在永久删除之前,恢复原始版本的photo.gif(版本ID 111111)。
在2016年1月8日00:00 UTC,过期生命周期规则执行并永久删除photo.gif(版本ID111111)(在它成为非当前版本五天之后)。
OBS如何计算对象已成为非当前版本的时间长度
在启用版本控制的桶中,您可以有一个对象的多个版本,始终有一个当前版本和零个或零个以上非当前版本。每次上传对象时,当前版本都变为非当前版本,新上传的版本(后续者)成为当前版本。为了确定对象成为非当前版本的天数,OBS会查看新上传版本的创建时间。OBS使用新上传版本创建以来的天数作为对象成为非当前版本的天数。
在使用生命周期配置时还原对象的非当前版本
您可以通过以下两种方式还原对象的非当前版本:
- 通过将对象的非当前版本复制到相同桶中。复制的对象将成为该对象的当前版本,且所有对象版本都保留。
- 通过永久删除当前版本的对象。当您删除当前对象版本时,实际上是将非当前版本转换为该对象的当前版本。
推荐您使用第一种方法,即将对象的非当前版本复制到相同桶中。由于OBS的最终一致性语义,在更改传播之前,永久删除的当前版本可能不会消失(OBS可能不知道此删除操作)。同时,在您配置了使非当前对象过期的生命周期之后,可能会永久删除非当前对象,包括您要还原的对象。因此,复制非当前版本的方法更加安全。
表1列出了对对象执行的生命周期配置规则操作与桶多版本控制状态的关系。
操作 |
不受版本控制的桶 |
启用多版本控制的桶 |
已暂停多版本控制的桶 |
---|---|---|---|
Transition 达到对象生命周期中指定的日期或时间段时 |
Transition转换对象,可以转换为WARM或COLD存储类别。 |
如果当前版本不带删除标记且是最新版本,则满足迁移时间可以迁移为WARM或COLD存储类别。 |
行为与启用了版本控制的桶相同。 |
Expiration 达到对象生命周期中指定的日期或时间段时 |
Expiration删除对象,删除的对象无法恢复。 |
如果当前版本不带删除标记,则生命周期创建删除标记(这会成为当前版本),现有当前版本保留为非当前版本。 |
桶已暂停版本控制时,过期会导致使用null版本ID创建删除标记。任何现有null版本都会由新的null版本覆盖,与该版本关联的数据无法恢复。 |
NoncurrentVersionTransition 对象成为非当前版本之后达到指定天数时 |
NoncurrentVersionTransition无效。 |
如果当前版本不带删除标记且不是最新版本,则满足转换时间可以转换为WARM或COLD存储类别。 |
行为与启用了版本控制的桶相同。 |
NoncurrentVersionExpiration 对象成为非当前版本之后达到指定天数时 |
NoncurrentVersionExpiration无效。 |
NoncurrentVersionExpiration操作删除对象的非当前版本,删除的对象无法恢复。 |
行为与启用了版本控制的桶相同。 |
基于特定日期的生命周期规则
使用Transition和Expiration操作时,您可以指定执行操作的日期(该日期必须符合ISO8601格式,时间始终为UTC午夜0点)。如果指定一个过去的日期,所有适用对象会立即执行操作。
不支持使用OBS控制台创建基于日期的生命周期规则。
基于日期的操作并非一次性操作。即使过了该日期后,只要规则状态为“已启用”,OBS仍会继续应用该基于日期的操作。
例如,假设您指定一个基于日期的过期操作来删除所有对象(假设规则中未指定任何筛选条件)。在指定日期,OBS会使存储桶中的所有对象过期。此外,OBS还会继续使你在存储桶中创建的所有新对象过期。要终止生命周期操作,您必须从生命周期配置中删除操作、禁用规则或从生命周期配置中删除规则。
基于对象期限的生命周期规则
使用Transition和Expiration操作时,您可以指定执行操作的时间段(自对象创建以来的天数)。指定天数后,OBS从第二天的UTC午夜0点开始计算时间。例如,如果对象的创建时间是2016年1月15日上午10:30 UTC,并且您在转换规则中指定了3天,则对象的转换日期将计算为2016年1月19日00:00 UTC。
OBS仅为每个对象保持上次修改日期。例如,OBS控制台在对象Properties(属性)窗格中显示LastModified(上次修改日期)日期。最初创建新对象时,此日期反映对象的创建日期。如果您替换对象,则此日期会相应地更改。
使用NoncurrentVersionTransition和NoncurrentVersionExpiration操作时,您可将对象版本成为非当前版本之后(即自对象覆盖或删除以来)的天数指定为对指定对象执行操作的时间段。
使用NoncurrentVersionTransition和NoncurrentVersionExpiration操作指定天数时,OBS将规则中指定的天数与对象版本成为非当前版本的时间相加,按照得到的时间从第二天的UTC午夜0点开始计算时间。例如,桶中某个对象当前版本的创建时间是2016年1月1日上午10:30 UTC,如果对象版本在2016年1月15日上午10:30 UTC成为非当前版本,并且您在转换规则中指定了3天,那么对象的转换日期计算为2016年1月19日00:00 UTC。
配置生命周期规则时,在同一个规则内或前缀包含关系的规则间,如果配置Transition和Expiration,那么Date或Days应保持一致。