本文主要介紹通過API對云解析付費實例進行新購、續費、自動續費、升級等操作。Demo中部分參數值僅為參考,實際調用時,請傳入真實數據。如:Domain、InstanceId。
SDK
Maven依賴:
<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>
其他語言參考:SDK列表 。
Client初始化請參考:安裝新版Java SDK 。
中國站RegionId固定使用為cn-hangzhou、國際站RegionId固定使用為ap-southeast-1。
1.創建云解析付費實例
描述:通過CreateInstance進行云解析付費實例創建。
調用接口名稱:CreateInstance
接口參考文檔:實例創建服務 - 阿里云交易和賬單管理API - 阿里云 (aliyun.com) 。
接口參數 | Demo實例參數 | 參數可取值范圍 | 取值描述解釋 |
Parameter.1.Code | parameters1.setCode | DNSSecurity | DNS安全。 |
Parameter.1.Value | parameters1.setValue | no; basic; advanced | 不需要;DNS攻擊基礎防御;DNS攻擊全力防御。 |
Parameter.2.Code | parameters2.setCode | DomainNumbers | 域名數量。 |
Parameter.2.Value | parameters2.setValue | 1-100 | 域名數量的取值范圍。 |
Parameter.3.Code | parameters3.setCode | Version | 云解析版本選擇。 |
Parameter.3.Value | parameters3.setValue | version_personal;version_enterprise_basic; version_enterprise_advanced | 個人版 ;企業標準版;企業旗艦版。 |
Parameter.4.Code | parameters4.setCode | Domain | 綁定域名名稱。 |
Parameter.4.Value | parameters4.setValue | example.com | 請輸入實際綁定實例的域名,若多個域名,用英文逗號分隔。 |
Parameter.5.Code | parameters5.setCode | InstanceType | 實例類型。 |
Parameter.5.Value | parameters5.setValue | HostedPublicZone; CachedPublicZone | 權威托管域名; 權威代理域名。 |
常見問題:
(1)綁定域名信息的參數parameters4.setCode("Domain"),傳值時首字母要大寫。否則綁定域名失敗。
(2)綁定的域名存在于購買實例的賬號下,若為非萬網域名,需要提前在云解析控制臺進行域名添加,或者調用接口AddDomain進行添加。具體參考:添加域名 - 云解析 DNS - 阿里云 (aliyun.com) 。
調用Demo參考:
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("alidns_pre");
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.云解析付費實例續費
描述:通過RenewInstance進行云解析付費實例續費。
調用接口名稱:RenewInstance
接口參考文檔:實例續費服務 - 阿里云交易和賬單管理API - 阿里云 (aliyun.com) 。
調用Demo參考:
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 {
/**
* 云解析實例續費
*/
@Test
public void renewInstanceTest() {
RenewInstanceRequest request = new RenewInstanceRequest();
// 填入真實創建的實例ID
request.setInstanceId("dns-cn-oew21y7bh50");
request.setProductCode("dns");
request.setRenewPeriod(3);
try {
RenewInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}
3.云解析實例自動續費
描述:通過SetRenewal設置云解析付費實例續費方式:手動續費、自動續費、不續費。
調用接口名稱:SetRenewal
接口參考文檔:設置實例自動續費服務 - 阿里云交易和賬單管理API - 阿里云 (aliyun.com) 。
自動續費周期參數說明:
接口參數 | 取值范圍 | 描述 |
RenewalPeriodUnit | 取值:M:月。Y:年。 | 自動續費周期單位。 |
RenewalPeriod | RenewalPeriodUnit取值為年時,取值范圍:1、2。3RenewalPeriodUnit取值為月時,取值范圍:1、2、3、6。 | 自動續費時長。 |
常見問題:
(1)ProductCode為必傳參數。
(2)當RenewalStatus= AutoRenewal時,RenewalPeriodUnit、RenewalPeriod為必傳。
調用Demo參考:
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 {
/**
* 云解析實例自動續費
*/
@Test
public void setRenewalTest() {
SetRenewalRequest request = new SetRenewalRequest();
// 填入真實創建的實例ID
request.setInstanceIDs("dns-cn-oew21y7bh50");
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.云解析實例升級
描述:通過ModifyInstance對云解析付費實例進行升級,目前云解析產品不支持付費實例降級。
調用接口名稱:ModifyInstance
接口參考文檔:實例變更服務 - 阿里云交易和賬單管理API - 阿里云 (aliyun.com) 。
Parameter.N.Code、Parameter.N.Value取值說明:
Parameter.N.Code傳入Version即可。
Parameter.N.Value(云解析付費實例版本)取值范圍:
version_personal : 個人版 ;
version_enterprise_basic : 企業標準版;
version_enterprise_advanced: 企業旗艦版;
常見問題:
(1)云解析付費實例目前不支持降級。
(2)InstanceId、ProductType為必傳參數。
調用Demo參考:
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 {
/**
* 云解析實例升級
*/
@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("alidns_pre");
request.setSubscriptionType("Subscription");
// 填入真實創建的實例ID
request.setInstanceId("dns-cn-oew21y7bh50");
try {
ModifyInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}
5.獲取付費版DNS產品實例詳情
通過獲取付費版DNS產品實例詳情根據實例ID獲取上述開通云解析收費版本產品實例的詳情信息。
調用Demo參考:
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 {
/**
* 獲取云解析付費版實例詳情
*/
@Test
public void describeDnsProductInstanceTest() {
DescribeDnsProductInstanceRequest request = new DescribeDnsProductInstanceRequest();
// 填入真實創建的實例ID
request.setInstanceId("dns-cn-oew21y7bh50");
try {
DescribeDnsProductInstanceResponse response = client.getAcsResponse(request);
System.out.println(JSON.toJSON(response));
} catch (ClientException e) {
e.printStackTrace();
}
}
}