Obtaining Lifecycle Rules (SDK for Java)
Function
You can configure lifecycle rules to periodically delete objects or transition objects between storage classes. For more information, see Lifecycle Management.
This API returns the lifecycle rules of a bucket.
Restrictions
- To obtain the lifecycle configuration of a bucket, you must be the bucket owner or have the required permission (obs:bucket:GetLifecycleConfiguration in IAM or GetLifecycleConfiguration in a bucket policy). For details, see Introduction to OBS Access Control, IAM Custom Policies, and Creating a Custom Bucket Policy.
Method
obsClient.getBucketLifecycle(final BaseBucketRequest request)
Request Parameters
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
request |
Yes |
Explanation: Request parameters related to basic bucket information. For details, see Table 2. |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
bucketName |
String |
Yes |
Explanation: Bucket name. Restrictions:
Default value: None |
Responses
Parameter |
Type |
Description |
---|---|---|
rules |
List<Rule> |
Explanation: List of lifecycle rules. For details, see Table 4. |
statusCode |
int |
Explanation: HTTP status code. Value range: A status code is a group of digits that can be 2xx (indicating successes) or 4xx or 5xx (indicating errors). It indicates the status of a response. For more information, see Status Code. Default value: None |
responseHeaders |
Map<String, Object> |
Explanation: Response header list, composed of tuples. In a tuple, the String key indicates the name of the header, and the Object value indicates the value of the header. Default value: None |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
id |
String |
No |
Explanation: Lifecycle rule ID. Value range: The value must contain 1 to 255 characters. Default value: None |
prefix |
String |
Yes |
Explanation: Object name prefix. It identifies the objects the rule applies to. You can leave this parameter blank to apply the rule to all objects in the bucket. Assume that you have the following objects: logs/day1, logs/day2, logs/day3, and ExampleObject.jpg. If you set prefix to ExampleObject.jpg, the rule applies to object ExampleObject.jpg only. If you set prefix to logs/, the rule applies to the three objects with name starting with logs/. If you leave prefix blank, the rule applies to all objects in the bucket. Value range: The value must contain 1 to 1,024 characters. Default value: None |
enabled |
boolean |
Yes |
Explanation: Whether the rule is enabled. Value range: true: The rule is enabled. false: The rule is disabled. Default value: None |
expiration |
No |
Explanation: Expiration time of an object. For details, see Table 5. Default value: None |
|
noncurrentVersionExpiration |
No |
Explanation: Expiration time of noncurrent object versions. For details, see Table 6. Restrictions:
Default value: None |
|
transitions |
List<Transition> |
No |
Explanation: Policies for storage class transition, including transition time and the storage class after transition. For details, see Table 7. Restrictions: This parameter is only available for the current object version. Default value: None |
noncurrentVersionTransitions |
No |
Explanation: Policies for storage class transition of noncurrent versions, including transition time and the storage class after transition. For details, see Table 9. Restrictions:
Default value: None |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
days |
Integer |
This parameter is mandatory if date is not configured. |
Explanation: Number of days (since the last update was made to the object) after which the lifecycle rule takes effect (the object will be deleted). Restrictions: This parameter is only available for the current object version. Value range: A positive integer, in days. Default value: None |
date |
Date |
This parameter is mandatory if days is not configured. |
Explanation: OBS deletes objects that were modified before the specified date. Default value: None |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
days |
Integer |
Yes |
Explanation: Number of days an object is noncurrent before it expires. Restrictions: This parameter is only available for noncurrent object versions. Value range: A positive integer, in days. Default value: None |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
days |
Integer |
This parameter is mandatory if date is not configured. |
Explanation: Number of days after its creation when the object is transitioned. Restrictions: This parameter is only available for the current object version. Value range: A positive integer, in days. Default value: None |
date |
Date |
This parameter is mandatory if days is not configured. |
Explanation: Date when the object will be transitioned. Default value: None |
storageClass |
Yes |
Explanation: Storage class the object is transitioned to. Restrictions:
Restrictions on storage class transitions:
Value range: See Table 8. Default value: None |
Constant |
Default Value |
Description |
---|---|---|
STANDARD |
STANDARD |
Standard storage class |
WARM |
WARM |
Infrequent Access storage class. |
COLD |
COLD |
Archive storage class. |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
days |
Integer |
This parameter is mandatory if date is not configured. |
Explanation: Number of days after its creation when the object is transitioned. Restrictions: This parameter is only available for noncurrent object versions. Value range: A positive integer, in days. Default value: None |
storageClass |
Yes |
Explanation: Storage class the object is transitioned to. Restrictions:
Restrictions on storage class transitions:
Value range: See Table 8. Default value: None |
Code Examples
This example returns the lifecycle configuration of bucket examplebucket.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.LifecycleConfiguration; public class GetBucketLifecycle001 { public static void main(String[] args) { // Obtain an AK/SK pair using environment variables or import the AK/SK pair in other ways. Using hard coding may result in leakage. // Obtain an AK/SK pair on the management console. String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // (Optional) If you are using a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. // Obtain an AK/SK pair and a security token using environment variables or import them in other ways. // String securityToken = System.getenv("SECURITY_TOKEN"); // Enter the endpoint corresponding to the bucket. EU-Dublin is used here as an example. Replace it with the one in your actual situation. String endPoint = "https://obs.eu-west-101.myhuaweicloud.eu"; // Obtain an endpoint using environment variables or import it in other ways. //String endPoint = System.getenv("ENDPOINT"); // Create an ObsClient instance. // Use the permanent AK/SK pair to initialize the client. ObsClient obsClient = new ObsClient(ak, sk,endPoint); // Use the temporary AK/SK pair and security token to initialize the client. // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // View the lifecycle rules LifecycleConfiguration config = obsClient.getBucketLifecycle("examplebucket"); System.out.println("getBucketLifecycle successfully"); for (LifecycleConfiguration.Rule rule : config.getRules()) { System.out.println(rule.getId()); System.out.println(rule.getPrefix()); for (LifecycleConfiguration.Transition transition : rule.getTransitions()) { System.out.println(transition.getDays()); System.out.println(transition.getStorageClass()); } System.out.println(rule.getExpiration() != null ? rule.getExpiration().getDays() : ""); for (LifecycleConfiguration.NoncurrentVersionTransition noncurrentVersionTransition : rule.getNoncurrentVersionTransitions()) { System.out.println(noncurrentVersionTransition.getDays()); System.out.println(noncurrentVersionTransition.getStorageClass()); } System.out.println( rule.getNoncurrentVersionExpiration() != null ? rule.getNoncurrentVersionExpiration().getDays() : ""); } } catch (ObsException e) { System.out.println("getBucketLifecycle failed"); // Request failed. Print the HTTP status code. System.out.println("HTTP Code:" + e.getResponseCode()); // Request failed. Print the server-side error code. System.out.println("Error Code:" + e.getErrorCode()); // Request failed. Print the error details. System.out.println("Error Message:" + e.getErrorMessage()); // Request failed. Print the request ID. System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("getBucketLifecycle failed"); // Print other error information. e.printStackTrace(); } } } |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.