All Products
Search
Document Center

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

Last Updated:Jul 18, 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. The values of specific parameters such as Domain and InstanceId in the sample code are for reference only. When you call the API operations, you must specify these parameters based on your business requirements.

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:

Parameter

Sample parameter name

Valid value

Description

Parameter.1.Code

parameters1.setCode

DNSSecurity

The DNS security policy.

Parameter.1.Value

parameters1.setValue

no, basic, and advanced

no: No protection against DNS attacks is provided. basic: Basic protection against DNS attacks is provided. advanced: Advanced protection against DNS attacks is provided.

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, and 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. If you want to bind multiple domain names to the instance, separate these domain names with commas (,).

Parameter.5.Code

parameters5.setCode

InstanceType

The type of the instance.

Parameter.5.Value

parameters5.setValue

HostedPublicZone

and CachedPublicZone

Hosted Public Zone,

Cached Public Zone.

Note:

(1) When you set the parameters4.setCode parameter, capitalize the first letter of the parameter value Domain. Otherwise, domain names cannot be bound to the instance.

(2) The domain names that you want to bind to the instance must exist within the account that purchases the instance. If you want to bind domain names that are not provided by HiChina, you must add the domain names 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 you set the RenewalPeriodUnit parameter to Y, you can set the RenewalPeriod parameter to 1, 2, or 3. If you set the RenewalPeriodUnit parameter 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: Personal Edition

  • version_enterprise_basic: Enterprise Standard Edition

  • version_enterprise_advanced: Enterprise Ultimate Edition

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();
        // The ID of the created instance.
        request.setInstanceId("dns-cn-oew21y7bh50"); 
        try {
            DescribeDnsProductInstanceResponse response = client.getAcsResponse(request);
            System.out.println(JSON.toJSON(response));
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}