from tos import StatusType, StorageClassType
from tos.models2 import BucketLifeCycleRule, BucketLifeCycleExpiration, BucketLifeCycleAbortInCompleteMultipartUpload, \
BucketLifeCycleTransition, Tag, BucketLifeCycleNonCurrentVersionTransition, \
BucketLifeCycleNoCurrentVersionExpiration
ak = os.getenv('TOS_ACCESS_KEY')
sk = os.getenv('TOS_SECRET_KEY')
endpoint = "your endpoint"
bucket_name = "bucket-test"
client = tos.TosClientV2(ak, sk, endpoint, region)
rule1 = BucketLifeCycleRule(id='rule1', prefix='test1/',
status=StatusType.Status_Enable,
expiration=BucketLifeCycleExpiration(days=70))
rule2 = BucketLifeCycleRule(id='rule2', prefix='test2/',
status=StatusType.Status_Enable,
expiration=BucketLifeCycleExpiration(date=datetime.datetime(2022, 11, 30)))
rule3 = BucketLifeCycleRule(id='rule3', prefix='test3/',
status=StatusType.Status_Enable,
abort_in_complete_multipart_upload=BucketLifeCycleAbortInCompleteMultipartUpload(
rule4 = BucketLifeCycleRule(id='rule4', prefix='test4/',
status=StatusType.Status_Enable,
transitions=[BucketLifeCycleTransition(days=30,
storage_class=StorageClassType.Storage_Class_Ia)])
rule5 = BucketLifeCycleRule(id='rule5', prefix='test5/',
status=StatusType.Status_Enable,
transitions=[BucketLifeCycleTransition(days=30,
storage_class=StorageClassType.Storage_Class_Ia)],
tags=[Tag('key1', 'value1')])
rule6 = BucketLifeCycleRule(id='rule6', prefix='test6/',
status=StatusType.Status_Enable,
expiration=BucketLifeCycleExpiration(days=70),
non_current_version_transitions=[
BucketLifeCycleNonCurrentVersionTransition(non_current_days=30,
storage_class=StorageClassType.Storage_Class_Ia)],
no_current_version_expiration=BucketLifeCycleNoCurrentVersionExpiration(
lifecycle = [rule1, rule2, rule3, rule4, rule5, rule6]
out = client.put_bucket_lifecycle(bucket_name, lifecycle)
except tos.exceptions.TosClientError as e:
print('fail with client error, message:{}, cause: {}'.format(e.message, e.cause))
except tos.exceptions.TosServerError as e:
print('fail with server error, code: {}'.format(e.code))
print('error with request id: {}'.format(e.request_id))
print('error with message: {}'.format(e.message))
print('error with http code: {}'.format(e.status_code))
print('error with ec: {}'.format(e.ec))
print('error with request url: {}'.format(e.request_url))
print('fail with unknown error: {}'.format(e))