All Products
Search
Document Center

Alibaba Cloud DNS:Purchase, renew, and upgrade a paid Alibaba Cloud DNS instance by calling API operations

Last Updated:Apr 19, 2023

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.

Important

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:

image

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

Note

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();
        }
    }
}