Data Encryption Workshop
Data Encryption Workshop
- What's New
- Function Overview
- Service Overview
- Getting Started
-
User Guide
- Key Management Service
- Cloud Secret Management Service
- Key Pair Service
- Dedicated HSM
- Auditing Logs
- Permission Control
- Best Practices
-
API Reference
- Before You Start
- Calling APIs
- API Overview
- APIs
- Application Examples
- Permissions Policies and Supported Actions
- Appendix
- Change History
- SDK Reference
-
FAQs
-
KMS Related
- What Is Key Management Service?
- What Is a Customer Master Key?
- What Is a Default Key?
- What Are the Differences Between a Custom Key and a Default Key?
- What Is a Data Encryption Key?
- Why Cannot I Delete a CMK Immediately?
- Which Cloud Services Can Use KMS for Encryption?
- How Do Huawei Cloud Services Use KMS to Encrypt Data?
- What Are the Benefits of Envelope Encryption?
- Is There a Limit on the Number of Custom Keys That I Can Create on KMS?
- Can I Export a CMK from KMS?
- Can I Decrypt My Data if I Permanently Delete My Custom Key?
- How Do I Use the Online Tool to Encrypt or Decrypt Small Volumes of Data?
- Can I Update CMKs Created by KMS-Generated Key Materials?
- How Are Default Keys Generated?
- What Should I Do If I Do Not Have the Permissions to Perform Operations on KMS?
- Why Can't I Wrap Asymmetric Keys by Using -id-aes256-wrap-pad in OpenSSL?
- Key Algorithms Supported by KMS
- What Should I Do If KMS Failed to Be Requested and Error Code 401 Is Displayed?
- CSMS Related
-
KPS Related
- How Do I Create a Key Pair?
- What Are a Private Key Pair and an Account Key Pair?
- How Do I Handle an Import Failure of a Key Pair Created Using PuTTYgen?
- What Should I Do When I Fail to Import a Key Pair Using Internet Explorer 9?
- How Do I Log In to a Linux ECS with a Private Key?
- How Do I Use a Private Key to Obtain the Password to Log In to a Windows ECS?
- How Do I Handle the Failure in Binding a Key Pair?
- How Do I Handle the Failure in Replacing a Key Pair?
- How Do I Handle the Failure in Resetting a Key Pair?
- How Do I Handle the Failure in Unbinding a Key Pair?
- Do I Need to Restart Servers After Replacing Its Key Pair?
- How Do I Enable the Password Login Mode for an ECS?
- How Do I Handle the Failure in Logging In to ECS After Unbinding the Key Pair?
- What Should I Do If My Private Key Is Lost?
- How Do I Convert the Format of a Private Key File?
- Can I Change the Key Pair of a Server?
- Can a Key Pair Be Shared by Multiple Users?
- How Do I Obtain the Public or Private Key File of a Key Pair?
-
Dedicated HSM Related
- What Is Dedicated HSM?
- How Does Dedicated HSM Ensure the Security for Key Generation?
- Do Equipment Room Personnel Has the Super Administrator Role to Steal Information by Using a Privileged UKey?
- What HSMs Are Used for Dedicated HSM?
- What APIs Does Dedicated HSM Support?
- How Do I Enable Public Access to a Dedicated HSM Instance?
- Pricing
- General
- Change History
-
KMS Related
- Videos
On this page
Help Center/
Data Encryption Workshop/
Best Practices/
General/
Retrying Failed DEW Requests by Using Exponential Backoff
Retrying Failed DEW Requests by Using Exponential Backoff
Updated on 2022-12-12 GMT+08:00
Scenario
If you receive an error message when calling an API, you can use exponential backoff to retry the request.
How It Works
If consecutive errors (such as traffic limiting errors) are reported by the service side, continuous access will keep causing conflicts. Exponential backoff can help you avoid such errors.
Constraints
The current account has an enabled key.
Example
- Prepare basic authentication information.
- ACCESS_KEY: Access key of the Huawei Cloud account. For details, see How Do I Obtain an Access Key (AK/SK)?
- SECRET_ACCESS_KEY: Secret access key of the Huawei Cloud account. For details, see How Do I Obtain an Access Key (AK/SK)?
- PROJECT_ID: site project ID. For details, see Obtaining a Project ID.
- KMS_ENDPOINT: endpoint for accessing KMS.
- Code for exponential backoff:
import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.exception.ClientRequestException; import com.huaweicloud.sdk.kms.v2.model.EncryptDataRequest; import com.huaweicloud.sdk.kms.v2.model.EncryptDataRequestBody; import com.huaweicloud.sdk.kms.v2.KmsClient; public class KmsEncryptExample { private static final String ACCESS_KEY = "xxxx"; private static final String SECRET_ACCESS_KEY = "xxxx"; private static final String KMS_ENDPOINT = "xxxx"; private static final String KEY_ID = "xxxx"; private static final String PROJECT_ID = "xxxx"; private static KmsClient KmsClientInit() { ICredential auth = new BasicCredentials() .withAk(ACCESS_KEY) .withSk(SECRET_ACCESS_KEY) .withProjectId(PROJECT_ID); return KmsClient.newBuilder() .withCredential(auth) .withEndpoint(KMS_ENDPOINT) .build(); } public static long getWaitTime(int retryCount) { long initialDelay = 200L; return (long) (Math.pow(2, retryCount) * initialDelay); } public static void encryptData(KmsClient client, String plaintext) { EncryptDataRequest request = new EncryptDataRequest().withBody( new EncryptDataRequestBody() .withKeyId(KEY_ID) .withPlainText(plaintext)); client.encryptData(request); } public static void main(String[] args) { int maxRetryTimes = 6; String plaintext = "plaintext"; String errorMsg = "The throttling threshold has been reached"; KmsClient client = KmsClientInit(); for (int i = 0; i < maxRetryTimes; i++) { try { encryptData(client, plaintext); return; } catch (ClientRequestException e) { if (e.getErrorMsg().contains(errorMsg)) { try { Thread.sleep(getWaitTime(i)); } catch (InterruptedException ex) { throw new RuntimeException(ex); } } } } } }
Parent topic: General
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.
The system is busy. Please try again later.