This topic describes how to call API operations to purchase, renew, upgrade, and enable auto-renewal for a paid Alibaba Cloud Domain Name System (DNS) instance. Specific parameter values in the sample code are for reference only. In actual calls, specify values as needed for the parameters, such as Domain and InstanceId.
SDK
Maven dependencies:
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-bssopenapi</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.6</version>
</dependency>
</dependencies>
For more information about SDKs in other programming languages, see SDK list.
Client initialization. For more information, see Install latest Java SDK.
If you are a user on the China site (aliyun.com), set the RegionId parameter to cn-hangzhou. If you are a user on the International site (alibabacloud.com), set the RegionId parameter to ap-southeast-1.
1. Create a paid Alibaba Cloud DNS instance
Description: You can call the CreateInstance operation to create a paid Alibaba Cloud DNS instance.
Operation: CreateInstance
References: CreateInstance
Description of request parameters:

Parameter | Sample parameter name | Valid value | Description |
Parameter.1.Code | parameters1.setCode | DNSSecurity | The DNS security policy. |
Parameter.1.Value | parameters1.setValue | no, basic, advanced | no: no DNS attack defense. basic: basic DNS attack defense. advanced: advanced DNS attack defense. |
Parameter.2.Code | parameters2.setCode | DomainNumbers | The number of domain names. |
Parameter.2.Value | parameters2.setValue | 1-100 | The value range of DomainNumbers. |
Parameter.3.Code | parameters3.setCode | Version | The edition of Alibaba Cloud DNS. |
Parameter.3.Value | parameters3.setValue | version_personal, version_enterprise_basic, version_enterprise_advanced | version_personal: Personal Edition. version_enterprise_basic: Enterprise Standard Edition. version_enterprise_advanced: Enterprise Ultimate Edition. |
Parameter.4.Code | parameters4.setCode | Domain | The domain name that you want to bind to the instance. |
Parameter.4.Value | parameters4.setValue | example.com | The domain name that you want to bind to the instance. Separate multiple domain names with commas (,). |
Parameter.5.Code | parameters5.setCode | InstanceType | The type of the instance. |
Parameter.5.Value | parameters5.setValue | HostedPublicZone, CachedPublicZone | HostedPublicZone: authoritative domain name. CachedPublicZone: cache-accelerated domain name. |
Note:
(1) When you set the parameters4.setCode parameter, capitalize the first letter of the domain name. Otherwise, the domain name cannot be bound to the instance.
(2) The domain name to be bound must exist under the account that purchases the instance. If you want to bind a domain name that is not provided by HiChina, you must add the domain name in advance in the Alibaba Cloud DNS console or by calling the AddDomain operation. For more information about how to add a domain name by calling the AddDomain operation, see AddDomain.
Sample code:
package AlidnsTest.DomainManager;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceResponse;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;
public class InstanceCreateRenewUpgrade extends AlidnsTestBase {
@Test
public void createInstanceTest() {
CreateInstanceRequest request = new CreateInstanceRequest();
request.setProductCode("dns");
request.setProductType("dns_dns_public_intl");
request.setSubscriptionType("Subscription");
request.setPeriod(1);
CreateInstanceRequest.Parameter parameters1 = new CreateInstanceRequest.Parameter();
parameters1.setCode("DNSSecurity");
parameters1.setValue("no");
CreateInstanceRequest.Parameter parameters2 = new CreateInstanceRequest.Parameter();
parameters2.setCode("DomainNumbers");
parameters2.setValue("1");
CreateInstanceRequest.Parameter parameters3 = new CreateInstanceRequest.Parameter();
parameters3.setCode("Version");
parameters3.setValue("version_personal");
CreateInstanceRequest.Parameter parameters4 = new CreateInstanceRequest.Parameter();
parameters4.setCode("Domain");
parameters4.setValue("example.taobao");
CreateInstanceRequest.Parameter parameters5 = new CreateInstanceRequest.Parameter();
parameters5.setCode("InstanceType");
parameters5.setValue("HostedPublicZone");
request.setParameters(Lists.newArrayList(parameters1,parameters2,parameters3,parameters4,parameters5));
try {
CreateInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}
2. Renew a paid Alibaba Cloud DNS instance
Description: You can call the RenewInstance operation to renew a paid Alibaba Cloud DNS instance.
Operation: RenewInstance
References: RenewInstance
Sample code:
package AlidnsTest.DomainManager;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.CreateInstanceResponse;
import com.aliyuncs.bssopenapi.model.v20171214.RenewInstanceRequest;
import com.aliyuncs.bssopenapi.model.v20171214.RenewInstanceResponse;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;
public class OrderCreateRenewUpgrade extends AlidnsTestBase {
/**
* Renew a paid Alibaba Cloud DNS instance.
*/
@Test
public void renewInstanceTest() {
RenewInstanceRequest request = new RenewInstanceRequest();
request.setInstanceId("dns-cn-oew21y7bh50"); // The ID of the created instance.
request.setProductCode("dns");
request.setRenewPeriod(3);
try {
RenewInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}
3. Enable auto-renewal for a paid Alibaba Cloud DNS instance
Description: You can call the SetRenewal operation to enable auto-renewal for a paid Alibaba Cloud DNS instance. The following options are supported: manual renewal, auto-renewal, and non-renewal.
Operation: SetRenewal
References: SetRenewal
The following table describes the parameters related to the auto-renewal period.
Parameter | Valid value | Description |
RenewalPeriodUnit | M: month. Y: year. | The unit of the auto-renewal period. |
RenewalPeriod | If the RenewalPeriodUnit parameter is set to Y, you can set the RenewalPeriod parameter to 1, 2, or 3. If the RenewalPeriodUnit parameter is set to M, you can set the RenewalPeriod parameter to 1, 2, 3, or 6. | The auto-renewal period. |
Note:
(1) The ProductCode parameter is required.
(2) If you set the RenewalStatus parameter to AutoRenewal, the RenewalPeriodUnit and RenewalPeriod parameters are required.
Sample code:
package AlidnsTest.DomainManager;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;
public class OrderCreateRenewUpgrade extends AlidnsTestBase {
/**
* Enable auto-renewal for a paid Alibaba Cloud DNS instance.
*/
@Test
public void setRenewalTest() {
SetRenewalRequest request = new SetRenewalRequest();
request.setInstanceIDs("dns-cn-oew21y7bh50"); // The ID of the created instance.
request.setRenewalStatus("AutoRenewal");
request.setProductCode("dns");
request.setRenewalPeriodUnit("M");
request.setRenewalPeriod(1);
try {
SetRenewalResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e){
e.printStackTrace();
}
}
}
4. Upgrade a paid Alibaba Cloud DNS instance
Description: You can call the ModifyInstance operation to upgrade a paid Alibaba Cloud DNS instance. Alibaba Cloud DNS does not support the downgrade of paid instances.
Operation: ModifyInstance
References: ModifyInstance
Valid values of the Parameter.N.Code and Parameter.N.Value parameters:
The valid value of the Parameter.N.Code parameter is Version.
The Parameter.N.Value parameter for a paid Alibaba Cloud DNS instance has the following valid values:
version_personal
version_enterprise_basic
version_enterprise_advanced
Note:
(1) Paid Alibaba Cloud DNS instances cannot be downgraded.
(2) The InstanceId and ProductType parameters are required.
Sample code:
package AlidnsTest.DomainManager;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;
public class OrderCreateRenewUpgrade extends AlidnsTestBase {
/**
* Upgrade a paid Alibaba Cloud DNS instance.
*/
@Test
public void modifyInstanceTest() {
ModifyInstanceRequest request = new ModifyInstanceRequest();
request.setModifyType("Upgrade");
ModifyInstanceRequest.Parameter parameters = new ModifyInstanceRequest.Parameter();
parameters.setCode("Version");
parameters.setValue("version_enterprise_basic");
request.setParameters(Lists.newArrayList(parameters));
request.setProductCode("dns");
request.setProductType("dns_dns_public_intl");
request.setSubscriptionType("Subscription");
request.setInstanceId("dns-cn-oew21y7bh50"); // The ID of the created instance.
try {
ModifyInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}
5. Query the details about a paid Alibaba Cloud DNS instance
You can call the DescribeDnsProductInstance operation to query the details about a paid Alibaba Cloud DNS instance by using the instance ID.
Sample code:
package AlidnsTest.DomainManager;
import com.alibaba.fastjson.JSON;
import com.aliyuncs.alidns.model.v20150109.DescribeDnsProductInstanceRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDnsProductInstanceResponse;
import com.aliyuncs.bssopenapi.model.v20171214.*;
import com.aliyuncs.exceptions.ClientException;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
import utils.AlidnsTestBase;
public class OrderCreateRenewUpgrade extends AlidnsTestBase {
/**
* Query the details about a paid Alibaba Cloud DNS instance.
*/
@Test
public void describeDnsProductInstanceTest() {
DescribeDnsProductInstanceRequest request = new DescribeDnsProductInstanceRequest();
request.setInstanceId("dns-cn-oew21y7bh50"); // The ID of the created instance.
try {
DescribeDnsProductInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}