生命周期

更新时间: 2020-03-24

目录

设置桶生命周期

获取桶生命周期

清除桶生命周期

本节介绍如何创管理存储桶的生命周期。

OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片。每条规则包含:

  • 是否生效。生命周期可以进行创建但不让它生效,在需要的时候开启。
  • 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
  • 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
    • 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
    • 配置到整个存储空间。此种方式只能创建一条规则。
  • 过期时间。指定一个过期天数N,文件会在其最近更新时间点的N天后过期。

桶生命周期的设置方法是setBucketLifeCycleConfiguration(String bucketName, BucketLifecycleConfiguration bucketLifecycleConfiguration),BucketLifecycleConfiguration参数的属性说明如下:

属性 描述
List Rule 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()