This topic describes how to purchase, renew, enable auto-renewal, and upgrade paid Cloud DNS instances through API. Some parameter values in the demo are for reference only. When you actually invoke the API, you need to provide real data, such as Domain and InstanceId.
SDK
Maven dependency:
<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 other languages, see: SDK list.
Client initialization reference: Install the new Java SDK.
For China site, the RegionId is fixed as cn-hangzhou. For international site, the RegionId is fixed as ap-southeast-1.
1. Create a paid Cloud DNS instance
Description: Create a paid Cloud DNS instance through CreateInstance.
API name: CreateInstance
API reference: Instance creation service.
API parameter | Demo instance parameter | Parameter value range | Value description |
Parameter.1.Code | parameters1.setCode | DNSSecurity | DNS security. |
Parameter.1.Value | parameters1.setValue | no; basic; advanced | Not needed; Basic DNS attack defense; Full DNS attack defense. |
Parameter.2.Code | parameters2.setCode | DomainNumbers | Number of domains. |
Parameter.2.Value | parameters2.setValue | 1-100 | Value range for the number of domains. |
Parameter.3.Code | parameters3.setCode | Version | Cloud DNS version selection. |
Parameter.3.Value | parameters3.setValue | version_personal, version_enterprise_advanced | Personal Edition, Enterprise Ultimate Edition. |
Parameter.4.Code | parameters4.setCode | Domain | Bound domain name. |
Parameter.4.Value | parameters4.setValue | example.com | Enter the actual domain name to bind to the instance. For multiple domains, separate them with commas. |
Parameter.5.Code | parameters5.setCode | InstanceType | Instance type. |
Parameter.5.Value | parameters5.setValue | HostedPublicZone; CachedPublicZone | Authoritative hosted domain; Authoritative proxy domain. |
FAQ:
(1) For the parameter parameters4.setCode("Domain") that binds domain information, the first letter must be uppercase. Otherwise, domain binding will fail.
(2) The bound domain must exist in the account that purchases the instance. If it is not an Alibaba Cloud domain, you need to add the domain in the Cloud DNS console in advance, or call the AddDomain API to add it. For more information, see: Add domain names.
Demo reference:
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 Cloud DNS instance
Description: Renew a paid Cloud DNS instance through RenewInstance.
API name: RenewInstance
API reference: Instance renewal service.
Demo reference:
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 Cloud DNS instance
*/
@Test
public void renewInstanceTest() {
RenewInstanceRequest request = new RenewInstanceRequest();
// Fill in the actual created instance ID
request.setInstanceId("dns-cn-oew21y7****");
request.setProductCode("dns");
request.setRenewPeriod(3);
try {
RenewInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}3. Auto-renewal for Cloud DNS instances
Description: Set the renewal method for paid Cloud DNS instances through SetRenewal: manual renewal, auto-renewal, or no renewal.
API name: SetRenewal
API reference: Set instance auto-renewal service.
Auto-renewal cycle parameter description:
API parameter | Value range | Description |
RenewalPeriodUnit | Values: M: Month. Y: Year. | Auto-renewal cycle unit. |
RenewalPeriod | When RenewalPeriodUnit is Year, value range: 1, 2, 3. When RenewalPeriodUnit is Month, value range: 1, 2, 3, 6. | Auto-renewal duration. |
FAQ:
(1) ProductCode is a required parameter.
(2) When RenewalStatus = AutoRenewal, RenewalPeriodUnit and RenewalPeriod are required.
Demo reference:
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 {
/**
* Cloud DNS instance auto-renewal
*/
@Test
public void setRenewalTest() {
SetRenewalRequest request = new SetRenewalRequest();
// Fill in the actual created instance ID
request.setInstanceIDs("dns-cn-oew21y7****");
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 Cloud DNS instances
Description: Upgrade paid Cloud DNS instances through ModifyInstance. Currently, Cloud DNS does not support downgrading paid instances.
API name: ModifyInstance
API reference: Instance modification service.
Parameter.N.Code and Parameter.N.Value description:
For Parameter.N.Code, enter Version.
Parameter.N.Value (Cloud DNS paid instance version) value range:
version_personal: Personal Edition;
version_enterprise_advanced: Enterprise Ultimate Edition;
FAQ:
(1) Cloud DNS paid instances currently do not support downgrading.
(2) InstanceId and ProductType are required parameters.
Demo reference:
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 {
/**
* Cloud DNS instance upgrade
*/
@Test
public void modifyInstanceTest() {
ModifyInstanceRequest request = new ModifyInstanceRequest();
request.setModifyType("Upgrade");
ModifyInstanceRequest.Parameter parameters = new ModifyInstanceRequest.Parameter();
parameters.setCode("Version");
parameters.setValue("version_enterprise_advanced");
request.setParameters(Lists.newArrayList(parameters));
request.setProductCode("dns");
request.setProductType("dns_dns_public_intl");
request.setSubscriptionType("Subscription");
// Fill in the actual created instance ID
request.setInstanceId("dns-cn-oew21y7****");
try {
ModifyInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}5. Get paid DNS product instance details
Use Get paid DNS product instance details to obtain detailed information about the paid Cloud DNS product instance created above by instance ID.
Demo reference:
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 {
/**
* Get Cloud DNS paid instance details
*/
@Test
public void describeDnsProductInstanceTest() {
DescribeDnsProductInstanceRequest request = new DescribeDnsProductInstanceRequest();
// Fill in the actual created instance ID
request.setInstanceId("dns-cn-oew21y7****");
try {
DescribeDnsProductInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}