生命周期
更新时间: 2020-03-24
目录
本节介绍如何创管理存储桶的生命周期。
OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片。每条规则包含:
- 是否生效。生命周期可以进行创建但不让它生效,在需要的时候开启。
- 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
- 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
- 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
- 配置到整个存储空间。此种方式只能创建一条规则。
- 过期时间。指定一个过期天数N,文件会在其最近更新时间点的N天后过期。
桶生命周期的设置方法是setBucketLifeCycleConfiguration(String bucketName, BucketLifecycleConfiguration bucketLifecycleConfiguration),BucketLifecycleConfiguration参数的属性说明如下:
属性 | 描述 |
---|---|
List |
Rule包含ID、Status、Expiration和Filter属性,用于指定生命周期的规则 |
String ID | 指定生命周期规则的ID号 |
String Status | Status表示生命周期规则的开启或者关闭状态,取值为Enabled 和 Disabled |
Expiration Expiration | 内部包含Integer类型的参数Days,用来指定清理文件的周期时长 |
Filter Filter | 内部包含String类型的参数Perfix,用来指定生命周期规则只能生效于前缀为Perfix的对象 |
AbortIncompleteMultipartUpload AbortIncompleteMultipartUpload | 内部包含Integer类型的DaysAfterInitiation,用来指定清理碎片的周期时长 |
设置桶生命周期
以下代码用于设置桶的生命周期:
import oss
# 设置基本信息
APIKey = '<your_API_key>'
APIKeySecrete = '<your_API_key_secrete>'
EndPoint = 'oss.cn-north-3.inspurcloudoss.com'
BucketName = '<your_bucket_name>'
# 使用API密钥来获取管理权限,获得方式在控制台右上角用户头像->API密钥
auth = oss.Auth(APIKey, APIKeySecrete)
# 设置管理权限,节点和要创建的储存桶名字, 这里节点以华北三为例
bucket = oss.Bucket(auth, EndPoint, BucketName)
# 获取桶内所有的生命周期规则
result = bucket.get_bucket_lifecycle()
# 创建生命周期规则。出于系统限制,当前每个存储桶内只能设置1条生命周期规则
# 规则1:文件在7天后过期
rule1 = oss.LifecycleRule('rule1', 'exp',
expiration=oss.LifecycleExpiration(days=7))
# 整合所有的生命周期规则
LCR = oss.BucketLifecycle([rule1])
# 上传生命周期规则
bucket.put_bucket_lifecycle(LCR)
获取桶生命周期
以下代码用于获取桶的生命周期:
import oss
# 设置基本信息
APIKey = '<your_API_key>'
APIKeySecrete = '<your_API_key_secrete>'
EndPoint = 'oss.cn-north-3.inspurcloudoss.com'
BucketName = '<your_bucket_name>'
# 使用API密钥来获取管理权限,获得方式在控制台右上角用户头像->API密钥
auth = oss.Auth(APIKey, APIKeySecrete)
# 设置管理权限,节点和要创建的储存桶名字, 这里节点以华北三为例
bucket = oss.Bucket(auth, EndPoint, BucketName)
# 获取桶内所有的生命周期规则
result = bucket.get_bucket_lifecycle()
# 分类显示生命周期规则信息
for lcr in result.rules:
print('ID:', lcr.id)
print('prefix:', lcr.prefix)
print('status:', lcr.status)
if lcr.tagging is not None:
print('tagging:', lcr.tagging)
if lcr.abort_multipart_upload is not None:
if lcr.abort_multipart_upload.days is not None:
print('abort_multipart_upload days:', lcr.abort_multipart_upload.days)
else:
print('abort_multipart_upload created_before_date:', lcr.abort_multipart_upload.created_before_date)
if lcr.expiration is not None:
if lcr.expiration.days is not None:
print('expiration days:', lcr.expiration.days)
elif lcr.expiration.expired_delete_marker is not None:
print('expiration marker date:', lcr.expiration.expired_delete_marker)
elif lcr.expiration.created_before_date is not None:
print('expiration created_before_date:', lcr.expiration.created_before_date)
if len(lcr.storage_transitions) > 0:
storage_info = ''
for storage_rule in lcr.storage_transitions:
if storage_rule.days is not None:
storage_info += 'days={0}, storage_class={1} *** '.format(
storage_rule.days, storage_rule.storage_class)
else:
storage_info += 'created_before_date={0}, storage_class={1} *** '.format(
storage_rule.created_before_date, storage_rule.storage_class)
print('storage_transitions:', storage_info)
清除桶生命周期
以下代码用于清除存储桶生命周期:
import oss
# 设置基本信息
APIKey = '<your_API_key>'
APIKeySecrete = '<your_API_key_secrete>'
EndPoint = 'oss.cn-north-3.inspurcloudoss.com'
BucketName = '<your_bucket_name>'
# 使用API密钥来获取管理权限,获得方式在控制台右上角用户头像->API密钥
auth = oss.Auth(APIKey, APIKeySecrete)
# 设置管理权限,节点和要创建的储存桶名字, 这里节点以华北三为例
bucket = oss.Bucket(auth, EndPoint, BucketName)
# 删除存储桶生命周期
bucket.delete_bucket_lifecycle()