Updated on 2023-11-09 GMT+08:00

Setting Lifecycle Rules

You can call setBucketLifecycle to set lifecycle rules for a bucket.

Setting an Object Transition Policy

Sample code:

 static OBSClient *client;
 NSString *endPoint = @"your-endpoint";
 
// Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables AccessKeyID and SecretAccessKey.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html.
char* ak_env = getenv("AccessKeyID");
char* sk_env = getenv("SecretAccessKey");
NSString *AK = [NSString stringWithUTF8String:ak_env];
NSString *SK = [NSString stringWithUTF8String:sk_env];

    
// Initialize identity authentication.
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
    
//Initialize service configuration.
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
    
// Initialize an instance of OBSClient.
client = [[OBSClient alloc] initWithConfiguration:conf];
    
// Set lifecycle rules.
OBSLifecycleRule *rule = [[OBSLifecycleRule alloc] initWithID:@"delete-2-days" prefix:@"test/" status:OBSLifecycleStatusEnabled];
// Specify that objects, after having been created for 30 days, will be transited to OBS Infrequent Access.
OBSLifecycleTransition* transitionStandard = [[OBSLifecycleTransition alloc]initWithDays:[NSNumber numberWithInteger:30] storageClass:OBSStorageClassStandardIA];
// Specify that objects, after been created for 60 days, will be transited to the specified storage class.
OBSLifecycleTransition* transitionGlacier= [[OBSLifecycleTransition alloc]initWithDays:[NSNumber numberWithInteger:60] storageClass:OBSStorageClassGlacier];
// Specify that objects, after having been changed to noncurrent versions for 30 days, will be transited to OBS Standard.
OBSLifecycleNoncurrentVersionTransition* noncurrentTransistionStandard = [[OBSLifecycleNoncurrentVersionTransition alloc]initWithDays:[NSNumber numberWithInteger:30] storageClass:OBSStorageClassStandardIA];
//Specify that objects, after having been changed to noncurrent versions for 60 days, will be transited to OBS Archive.
OBSLifecycleNoncurrentVersionTransition* noncurrentTransistionGlacier= [[OBSLifecycleNoncurrentVersionTransition alloc]initWithDays:[NSNumber numberWithInteger:60] storageClass:OBSStorageClassGlacier];

    
[rule.transitionList addObject:transitionStandard];
[rule.transitionList addObject:transitionGlacier];
    
[rule.noncurrentVersionTransitionList addObject:noncurrentTransistionStandard];
[rule.noncurrentVersionTransitionList addObject:noncurrentTransistionGlacier];
    
rule.expiration = expiration;
rule.noncurrentVersionExpiration  = noncurrentExpiration;
    
OBSSetBucketLifecycleRequest *request = [[OBSSetBucketLifecycleRequest alloc]initWithBucketName:@"bucketname" ];
[request.lifecycleRuleList addObject: rule];
OBSLifecycleRule* rule2 = [rule copy];
rule2.ID = @"123";
rule2.prefix = @"test1/";
[request.lifecycleRuleList addObject: rule2];
    
 [client setBucketLifecycle:request completionHandler:^(OBSSetBucketLifecycleResponse *response, NSError *error){
        NSLog(@"%@",response);
 }];

Setting an Object Expiration Time

Sample code:

static OBSClient *client;
NSString *endPoint = @"your-endpoint";
// Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables AccessKeyID and SecretAccessKey.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html.
char* ak_env = getenv("AccessKeyID");
char* sk_env = getenv("SecretAccessKey");
NSString *AK = [NSString stringWithUTF8String:ak_env];
NSString *SK = [NSString stringWithUTF8String:sk_env];
    
// Initialize identity authentication.
OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
    
//Initialize service configuration.
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
    
// Initialize an instance of OBSClient.
client = [[OBSClient alloc] initWithConfiguration:conf];
    
// Specify the prefix.
OBSLifecycleRule *rule = [[OBSLifecycleRule alloc] initWithID:@"delete-2-days" prefix:@"test/" status:OBSLifecycleStatusEnabled];
  
// Set the new expiration time.
OBSLifecycleExpiration* expiration = [[OBSLifecycleExpiration alloc]initWithDays:[NSNumber numberWithInteger:61]];
// Set the new expiration time for noncurrent versions.
OBSLifecycleNoncurrentVersionExpiration* noncurrentExpiration = [[OBSLifecycleNoncurrentVersionExpiration alloc]initWithDays:[NSNumber numberWithInteger:61]];
    
[rule.transitionList addObject:transitionStandard];
[rule.transitionList addObject:transitionGlacier];
    
[rule.noncurrentVersionTransitionList addObject:noncurrentTransistionStandard];
[rule.noncurrentVersionTransitionList addObject:noncurrentTransistionGlacier];
    
rule.expiration = expiration;
rule.noncurrentVersionExpiration  = noncurrentExpiration;
    
OBSSetBucketLifecycleRequest *request = [[OBSSetBucketLifecycleRequest alloc]initWithBucketName:@"bucketname" ];
[request.lifecycleRuleList addObject: rule];
OBSLifecycleRule* rule2 = [rule copy];
rule2.ID = @"123";
rule2.prefix = @"test1/";
[request.lifecycleRuleList addObject: rule2];
    
[client setBucketLifecycle:request completionHandler:^(OBSSetBucketLifecycleResponse *response, NSError *error){
   NSLog(@"%@",response);
}];