Restoring an Archive Object (SDK for Java)
Function
Archive objects must first be restored before you can download them. Archive objects can be restored in either of the following ways.
|
Option |
Description |
Value in OBS Java SDK |
|---|---|---|
|
Expedited |
Data can be restored within 1 to 5 minutes. |
RestoreTierEnum.EXPEDITED |
|
Standard |
Data can be restored within 3 to 5 hours. This is the default option. |
RestoreTierEnum.STANDARD |
Restrictions
- To restore an Archive object, you must be the bucket owner or have the required permission (obs:object:RestoreObject in IAM or RestoreObject in a bucket policy.) For details, see Introduction to OBS Access Control, IAM Custom Policies, and Configuring an Object Policy.
- To prolong the validity period of the Archive data restored, you can repeatedly restore the data, but you will be billed for each restore. After a second restore, the validity period of Standard object copies will be prolonged, and you need to pay for storing these copies during the prolonged period.
- The object specified in ObsClient.restoreObject must be in the Archive storage class. Otherwise, an exception will be thrown when you call this API.
Method
obsClient.restoreObject(RestoreObjectRequest request)
Request Parameters
|
Parameter |
Type |
Mandatory (Yes/No) |
Description |
|---|---|---|---|
|
request |
Yes |
Explanation: Request parameters for downloading an object. For details, see Table 2. |
|
Parameter |
Type |
Mandatory (Yes/No) |
Description |
|---|---|---|---|
|
bucketName |
String |
Yes |
Explanation: Bucket name. Restrictions:
Default value: None |
|
objectKey |
String |
Yes |
Explanation: Object name. An object is uniquely identified by an object name in a bucket. An object name is a complete path that does not contain the bucket name. For example, if the address for accessing the object is examplebucket.obs.eu-west-101.myhuaweicloud.eu/folder/test.txt, the object name is folder/test.txt. Value range: The value must contain 1 to 1,024 characters. Default value: None |
|
versionId |
String |
No |
Explanation: Version ID of the Archive object to restore. Default value: None. If this parameter is left blank, the latest version of the object is specified. |
|
days |
int |
Yes |
Explanation: After an object is restored, a Standard copy of it is generated. This parameter specifies how long the Standard copy can be retained, that is, the validity period of the restored object. Restrictions: The value must be a positive integer. Value range: The value ranges from 1 to 30, in days. Default value: None |
|
tier |
No |
Explanation: The restore option, which indicates the time spent on restoring the object. Value range: For details, see Table 3. Default value: Standard |
Responses
|
Parameter |
Type |
Description |
|---|---|---|
|
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 |
Code Examples
This example restores object objectname from the Archive storage class using ObsClient.restoreObject and downloads it using ObsClient.getObject.
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 |
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.ObsObject; import com.obs.services.model.RestoreObjectRequest; import com.obs.services.model.RestoreTierEnum; public class GetObject007 { 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 { // Restore the Archive object. RestoreObjectRequest request = new RestoreObjectRequest(); request.setBucketName("examplebucket"); request.setObjectKey("objectname"); request.setDays(1); request.setRestoreTier(RestoreTierEnum.EXPEDITED); obsClient.restoreObject(request); // Wait for the object to be restored. Thread.sleep(60 * 6 * 1000); // Download the object. ObsObject obsObject = obsClient.getObject("examplebucket", "objectname"); System.out.println("getObject successfully"); obsObject.getObjectContent().close(); } catch (ObsException e) { System.out.println("getObject 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("getObject failed"); // Print other error information. e.printStackTrace(); } } } |
Helpful Links
- Obtaining Object Metadata (SDK for Java) (Note: View the restoration status of an object through the x-obs-restore response header.) and Viewing the Restoration Status of an Object
- Restoring Objects
- (GitHub) Sample Code for Restoring an Archive Object
- OBS Error Codes
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.