Просмотр исходного кода

init push

Signed-off-by: 温仰 <rutong.grt@alibaba-inc.com>
温仰 8 лет назад
Родитель
Сommit
907e74514a

+ 202 - 0
LICENSE.txt

@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 126 - 2
README.md

@@ -1,2 +1,126 @@
-# alibaba-cloud-sdk-go
-Alibaba Cloud SDK for the Go programming language.
+# 阿里云Go SDK
+欢迎使用阿里云开发者工具套件(SDK)。阿里云Go SDK让您不用复杂编程即可访问云服务器、云监控等多个阿里云服务。这里向您介绍如何获取阿里云Go SDK并开始调用。
+
+## 环境准备
+1. 要使用阿里云Go SDK,您需要一个云账号以及一对`Access Key ID`和`Access Key Secret`。 请在阿里云控制台中的[AccessKey管理页面](https://usercenter.console.aliyun.com/?spm=5176.doc52740.2.3.QKZk8w#/manage/ak)上创建和查看您的Access Key,或者联系您的系统管理员
+2. 要使用阿里云SDK访问某个产品的API,您需要事先在[阿里云控制台](https://home.console.aliyun.com/?spm=5176.doc52740.2.4.QKZk8w)中开通这个产品。
+
+## SDK获取和安装
+
+使用`go get`下载安装SDK
+
+```
+go get -u github.com/aliyun/alibaba-cloud-sdk-go
+```
+
+如果您使用了glide管理依赖,您也可以使用glide来安装阿里云GO SDK
+
+```
+glide get github.com/aliyun/alibaba-cloud-sdk-go
+```
+
+另外,阿里云Java SDK也会发布在 https://develop.aliyun.com/tools/sdk#/go 这个地址。
+
+## 开始调用
+以下这个代码示例向您展示了调用阿里云GO SDK的3个主要步骤:
+
+1. 创建Client实例
+2. 创建API请求并设置参数
+3. 发起请求并处理异常
+
+```go
+import(
+	github.com/aliyun/aliyun-openapi-go-sdk/services/ecs
+	github.com/aliyun/aliyun-openapi-go-sdk/services/rds
+)
+
+// 创建ecsClient实例
+ecsClient, err := ecs.NewClientWithAccessKey(
+	"<your-region-id>", 			// 您的可用区ID
+	"<your-access-key-id>", 		// 您的Access Key ID
+	"<your-access-key-secret>")		// 您的Access Key Secret
+if err != nil {
+	// 异常处理
+}
+
+// 创建API请求并设置参数
+request := ecs.CreateDescribeInstancesRequest()
+request.PageSize = "10"
+
+// 发起请求并处理异常
+response, err := ecsClient.DescribeInstances(request)
+if err != nil {
+	// 异常处理
+}
+```
+
+在创建Client实例时,您需要填写3个参数:`Region ID`、`Access Key ID`和`Access Key Secret`。`Access Key ID`和`Access Key Secret`可以从控制台获得;而`Region ID`可以从[地域列表](https://help.aliyun.com/document_detail/40654.html?spm=5176.doc52740.2.8.FogWrd)中获得
+
+
+## Keepalive
+阿里云Go SDK底层使用Go语言原生的`net/http`收发请求,因此配置方式与`net/http`相同,您可以通过config直接将配置传递给底层的httpClient
+```go
+httpTransport := http.Transport{
+	// set http client options
+}
+config := sdk.NewConfig()
+            .WithHttpTransport(httpTransport)
+            .WithTimeout(timeout)
+ecsClient, err := ecs.NewClientWithOptions(config)
+
+```
+
+## 并发请求
+
+* 因Go语言的并发特性,我们建议您在应用层面控制SDK的并发请求。
+* 为了方便您的使用,我们也提供了可直接使用的并发调用方式,相关的并发控制由SDK内部实现。
+
+##### 开启SDK Client的并发功能
+```go
+// 最大并发数
+poolSize := 2
+// 可缓存的最大请求数
+maxTaskQueueSize := 5
+
+// 在创建时开启异步功能
+config := sdk.NewConfig()
+            .WithEnableAsync(true)
+            .WithGoRoutinePoolSize(poolSize)            // 可选,默认5
+            .WithMaxTaskQueueSize(maxTaskQueueSize)     // 可选,默认1000
+ecsClient, err := ecs.NewClientWithOptions(config)            
+
+// 也可以在client初始化后再开启
+client.EnableAsync(poolSize, maxTaskQueueSize)
+```
+
+##### 发起异步调用
+阿里云Go SDK支持两种方式的异步调用:
+
+1. 使用channel作为返回值
+    ```go
+    responseChannel, errChannel := client.FooWithChan(request)
+    
+    // this will block
+    response := <-responseChannel
+    err = <-errChannel
+    ```
+
+2. 使用callback控制回调
+    
+    ```go
+    blocker := client.FooWithCallback(request, func(response *FooResponse, err error) {
+    		// handle the response and err
+    	})
+ 	
+    // blocker 为(chan int),用于控制同步,返回1为成功,0为失败
+    // 在<-blocker返回失败时,err依然会被传入的callback处理
+    result := <-blocker
+    ```
+    
+## 泛化调用接口(CommonApi)
+阿里云Go SDK提供了一个特殊的"泛化调用接口",该接口具有以下特点:
+
+* 轻量、简便:只需核心包(github.com/aliyun/alibaba-cloud-sdk-go/sdk)即可发起调用
+* 灵活:无需更新,即可调用全阿里云的任意API,即使是最新发布的
+
+具体的使用方法,请参考官方文档

+ 20 - 0
sdk/auth/credential.go

@@ -0,0 +1,20 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package auth
+
+type Credential interface {
+
+}
+

+ 6 - 0
sdk/auth/credentials/BaseCredential.go

@@ -0,0 +1,6 @@
+package credentials
+
+type BaseCredential struct {
+	AccessKeyId     string
+	AccessKeySecret string
+}

+ 6 - 0
sdk/auth/credentials/EcsInstanceCredential.go

@@ -0,0 +1,6 @@
+package credentials
+
+type EcsInstanceCredential struct {
+	RoleName string
+}
+

+ 9 - 0
sdk/auth/credentials/StsAssumeRoleCredential.go

@@ -0,0 +1,9 @@
+package credentials
+
+type StsAssumeRoleCredential struct {
+	AccessKeyId           string
+	AccessKeySecret       string
+	RoleArn               string
+	RoleSessionName       string
+	RoleSessionExpiration int
+}

+ 7 - 0
sdk/auth/credentials/StsCredential.go

@@ -0,0 +1,7 @@
+package credentials
+
+type StsCredential struct {
+	AccessKeyId       string
+	AccessKeySecret   string
+	AccessKeyStsToken string
+}

+ 107 - 0
sdk/auth/roa_signature_composer.go

@@ -0,0 +1,107 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package auth
+
+import (
+	"bytes"
+	"sort"
+	"strings"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+)
+
+func signRoaRequest(request *requests.RoaRequest, signer Signer, regionId string) {
+	completeROASignParams(request, signer, regionId)
+	stringToSign := buildRoaStringToSign(request)
+	signature := signer.Sign(stringToSign, "")
+	request.Headers["Authorization"] = "acs " + signer.GetAccessKeyId() + ":" + signature
+}
+
+func completeROASignParams(request *requests.RoaRequest, signer Signer, regionId string) {
+	// complete query params
+	queryParams := request.QueryParams
+	if _, ok := queryParams["RegionId"]; !ok {
+		queryParams["RegionId"] = regionId
+	}
+	if extraParam := signer.GetExtraParam(); extraParam != nil {
+		for key, value := range extraParam {
+			queryParams[key] = value
+		}
+	}
+
+	// complete header params
+	headerParams := request.Headers
+	headerParams["Date"] = utils.GetTimeInFormatRFC2616()
+	headerParams["x-acs-signature-method"] = signer.GetName()
+	headerParams["x-acs-signature-version"] = signer.GetVersion()
+	if request.FormParams != nil && len(request.FormParams) > 0 {
+		formString := utils.GetUrlFormedMap(request.FormParams)
+		request.Content = []byte(formString)
+		headerParams["Content-Type"] = requests.Form
+	}
+	contentMD5 := utils.GetMD5Base64(request.Content)
+	headerParams["Content-MD5"] = contentMD5
+	if _, contains := headerParams["Content-Type"]; !contains {
+		headerParams["Content-Type"] = requests.Raw
+	}
+	switch format := request.GetAcceptFormat(); format {
+	case "JSON":
+		headerParams["Accept"] = requests.Json
+	case "XML":
+		headerParams["Accept"] = requests.Xml
+	default:
+		headerParams["Accept"] = requests.Raw
+	}
+}
+
+func buildRoaStringToSign(request *requests.RoaRequest) (stringToSign string) {
+
+	headers := request.Headers
+
+	stringToSignBuilder := bytes.Buffer{}
+	stringToSignBuilder.WriteString(request.Method)
+	stringToSignBuilder.WriteString(requests.HeaderSeparator)
+
+	// append header keys for sign
+	appendIfContain(headers, &stringToSignBuilder, "Accept", requests.HeaderSeparator)
+	appendIfContain(headers, &stringToSignBuilder, "Content-MD5", requests.HeaderSeparator)
+	appendIfContain(headers, &stringToSignBuilder, "Content-Type", requests.HeaderSeparator)
+	appendIfContain(headers, &stringToSignBuilder, "Date", requests.HeaderSeparator)
+
+	// sort and append headers witch starts with 'x-acs-'
+	var acsHeaders []string
+	for key := range headers {
+		if strings.HasPrefix(key, "x-acs-") {
+			acsHeaders = append(acsHeaders, key)
+		}
+	}
+	sort.Strings(acsHeaders)
+	for _, key := range acsHeaders {
+		stringToSignBuilder.WriteString(key + ":" + headers[key])
+		stringToSignBuilder.WriteString(requests.HeaderSeparator)
+	}
+
+	// append query params
+	stringToSignBuilder.WriteString(request.GetQueries())
+	stringToSign = stringToSignBuilder.String()
+	return
+}
+
+func appendIfContain(sourceMap map[string]string, target *bytes.Buffer, key, separator string) {
+	if value, contain := sourceMap[key]; contain && len(value) > 0 {
+		target.WriteString(sourceMap[key])
+		target.WriteString(separator)
+	}
+}

+ 80 - 0
sdk/auth/rpc_signature_composer.go

@@ -0,0 +1,80 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package auth
+
+import (
+	"net/url"
+	"sort"
+	"strings"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+)
+
+func signRpcRequest(request *requests.RpcRequest, signer Signer, regionId string) {
+	completeRpcSignParams(request, signer, regionId)
+	stringToSign := buildRpcStringToSign(request)
+	signature := signer.Sign(stringToSign, "&")
+	request.QueryParams["Signature"] = signature
+}
+
+func completeRpcSignParams(request *requests.RpcRequest, signer Signer, regionId string) {
+	queryParams := request.QueryParams
+	queryParams["Version"] = request.GetVersion()
+	queryParams["Action"] = request.GetActionName()
+	queryParams["Format"] = request.GetAcceptFormat()
+	queryParams["Timestamp"] = utils.GetTimeInFormatISO8601()
+	queryParams["SignatureMethod"] = signer.GetName()
+	queryParams["SignatureType"] = signer.GetType()
+	queryParams["SignatureVersion"] = signer.GetVersion()
+	queryParams["SignatureNonce"] = utils.GetUUIDV4()
+	queryParams["AccessKeyId"] = signer.GetAccessKeyId()
+
+	if _, contains := queryParams["RegionId"]; !contains {
+		queryParams["RegionId"] = regionId
+	}
+	if extraParam := signer.GetExtraParam(); extraParam != nil {
+		for key, value := range extraParam {
+			queryParams[key] = value
+		}
+	}
+
+	request.Headers["Content-Type"] = requests.Form
+	formString := utils.GetUrlFormedMap(request.FormParams)
+	request.Content = []byte(formString)
+}
+
+func buildRpcStringToSign(request *requests.RpcRequest) (stringToSign string) {
+	signParams := make(map[string]string)
+	for key, value := range request.QueryParams {
+		signParams[key] = value
+	}
+	for key, value := range request.FormParams {
+		signParams[key] = value
+	}
+
+	// sort params by key
+	var paramKeySlice []string
+	for key := range signParams {
+		paramKeySlice = append(paramKeySlice, key)
+	}
+	sort.Strings(paramKeySlice)
+	stringToSign = utils.GetUrlFormedMap(signParams)
+	stringToSign = strings.Replace(stringToSign, "+", "%20", -1)
+	stringToSign = strings.Replace(stringToSign, "*", "%2A", -1)
+	stringToSign = strings.Replace(stringToSign, "%7E", "~", -1)
+	stringToSign = url.QueryEscape(stringToSign)
+	stringToSign = request.Method + "&%2F&" + stringToSign
+	return
+}

+ 78 - 0
sdk/auth/signer.go

@@ -0,0 +1,78 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package auth
+
+import (
+	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"reflect"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+type Signer interface {
+	GetName() string
+	GetType() string
+	GetVersion() string
+	GetAccessKeyId() string
+	GetExtraParam() map[string]string
+	Sign(stringToSign, secretSuffix string) string
+	Shutdown()
+}
+
+func NewSignerWithCredential(credential Credential, commonApi func(request *requests.CommonRequest) (response *responses.CommonResponse, err error)) (signer Signer, err error) {
+	switch instance := credential.(type) {
+	case *credentials.BaseCredential:
+		{
+			signer, err = signers.NewSignerV1(instance)
+		}
+	case *credentials.StsCredential:
+		{
+			signer, err = signers.NewSignerSts(instance)
+		}
+	case *credentials.StsAssumeRoleCredential:
+		{
+			signer, err = signers.NewSignerStsAssumeRole(instance, commonApi)
+		}
+	default:
+		message := fmt.Sprintf(errors.UnsupportedCredentialMessage, reflect.TypeOf(credential))
+		err = errors.NewClientError(errors.UnsupportedCredentialCode, message, nil)
+	}
+	return
+}
+
+func Sign(request requests.AcsRequest, signer Signer, regionId string) (err error) {
+	switch instance := request.(type) {
+	case *requests.RoaRequest:
+		{
+			signRoaRequest(instance, signer, regionId)
+		}
+	case *requests.RpcRequest:
+		{
+			signRpcRequest(instance, signer, regionId)
+		}
+	case *requests.CommonRequest:
+		{
+			err = Sign(instance.Ontology, signer, regionId)
+		}
+	default:
+		message := fmt.Sprintf(errors.UnknownRequestTypeMessage, reflect.TypeOf(request))
+		err = errors.NewClientError(errors.UnknownRequestTypeCode, message, nil)
+	}
+
+	return
+}

+ 30 - 0
sdk/auth/signers/algorithms.go

@@ -0,0 +1,30 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"crypto/hmac"
+	"crypto/sha1"
+	"encoding/base64"
+)
+
+func ShaHmac1(source, secret string) string {
+	key := []byte(secret)
+	hmac := hmac.New(sha1.New, key)
+	hmac.Write([]byte(source))
+	signedBytes := hmac.Sum(nil)
+	signedString := base64.StdEncoding.EncodeToString(signedBytes)
+	return signedString
+}

+ 52 - 0
sdk/auth/signers/credential_updater.go

@@ -0,0 +1,52 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+	"time"
+)
+
+const defaultInAdvanceScale = 0.8
+
+type credentialUpdater struct {
+	credentialExpiration int
+	lastUpdateTimestamp  int64
+	inAdvanceScale       float64
+	buildRequestMethod   func() (*requests.CommonRequest, error)
+	responseCallBack     func(response *responses.CommonResponse) (error)
+	commonApi            func(request *requests.CommonRequest) (response *responses.CommonResponse, err error)
+}
+
+func (updater *credentialUpdater) needUpdateCredential() (result bool) {
+	if updater.inAdvanceScale == 0 {
+		updater.inAdvanceScale = defaultInAdvanceScale
+	}
+	return time.Now().Unix()-updater.lastUpdateTimestamp >= int64(float64(updater.credentialExpiration)*updater.inAdvanceScale)
+}
+
+func (updater *credentialUpdater) updateCredential() (err error) {
+	request, err := updater.buildRequestMethod()
+	if err == nil {
+		return
+	}
+	response, err := updater.commonApi(request)
+	if err == nil {
+		return
+	}
+	err = updater.responseCallBack(response)
+	return
+}

+ 58 - 0
sdk/auth/signers/signer_ecs_instance.go

@@ -0,0 +1,58 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+)
+
+type SignerEcsInstance struct {
+	credential *credentials.EcsInstanceCredential
+}
+
+func NewSignerEcsInstance(credential *credentials.EcsInstanceCredential) *SignerEcsInstance {
+	return &SignerEcsInstance{
+		credential: credential,
+	}
+}
+
+func (*SignerEcsInstance) GetName() string {
+	return "HMAC-SHA1"
+}
+
+func (*SignerEcsInstance) GetType() string {
+	return ""
+}
+
+func (*SignerEcsInstance) GetVersion() string {
+	return "1.0"
+}
+
+func (signer *SignerEcsInstance) GetAccessKeyId() string {
+	return signer.credential.RoleName
+}
+
+func (signer *SignerEcsInstance) GetExtraParam() map[string]string {
+	return map[string]string{"SecurityToken": signer.credential.RoleName}
+}
+
+func (signer *SignerEcsInstance) Sign(stringToSign, secretSuffix string) string {
+	secret := signer.credential.RoleName + secretSuffix
+	return ShaHmac1(stringToSign, secret)
+}
+
+func (signer *SignerEcsInstance) Shutdown() {
+
+}

+ 58 - 0
sdk/auth/signers/signer_sts.go

@@ -0,0 +1,58 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+)
+
+type SignerSts struct {
+	credential *credentials.StsCredential
+}
+
+func NewSignerSts(credential *credentials.StsCredential) (*SignerSts, error) {
+	return &SignerSts{
+		credential: credential,
+	}, nil
+}
+
+func (*SignerSts) GetName() string {
+	return "HMAC-SHA1"
+}
+
+func (*SignerSts) GetType() string {
+	return ""
+}
+
+func (*SignerSts) GetVersion() string {
+	return "1.0"
+}
+
+func (signer *SignerSts) GetAccessKeyId() string {
+	return signer.credential.AccessKeyId
+}
+
+func (signer *SignerSts) GetExtraParam() map[string]string {
+	return map[string]string{"SecurityToken": signer.credential.AccessKeyStsToken}
+}
+
+func (signer *SignerSts) Sign(stringToSign, secretSuffix string) string {
+	secret := signer.credential.AccessKeySecret + secretSuffix
+	return ShaHmac1(stringToSign, secret)
+}
+
+func (signer *SignerSts) Shutdown() {
+
+}

+ 145 - 0
sdk/auth/signers/signer_sts_assume_role.go

@@ -0,0 +1,145 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+	"time"
+	"strconv"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"net/http"
+	"encoding/json"
+	"github.com/jmespath/go-jmespath"
+)
+
+const (
+	defaultDurationSeconds = 3600
+)
+
+type SignerStsAssumeRole struct {
+	*credentialUpdater
+	roleSessionName   string
+	sessionCredential *sessionCredential
+	credential        *credentials.StsAssumeRoleCredential
+}
+
+type sessionCredential struct {
+	accessKeyId     string
+	accessKeySecret string
+	securityToken   string
+}
+
+func NewSignerStsAssumeRole(credential *credentials.StsAssumeRoleCredential, commonApi func(request *requests.CommonRequest) (response *responses.CommonResponse, err error)) (signer *SignerStsAssumeRole, err error) {
+	signer = &SignerStsAssumeRole{
+		credentialUpdater: &credentialUpdater{
+			credentialExpiration: credential.RoleSessionExpiration,
+			buildRequestMethod:   signer.buildCommonRequest,
+			responseCallBack:     signer.refreshCredential,
+			commonApi:            commonApi,
+		},
+		credential: credential,
+	}
+	if len(credential.RoleSessionName) > 0 {
+		signer.roleSessionName = credential.RoleSessionName
+	} else {
+		signer.roleSessionName = "aliyun-go-sdk-" + strconv.FormatInt(time.Now().UnixNano()/1000, 10)
+	}
+	if credential.RoleSessionExpiration > 0 {
+		if credential.RoleSessionExpiration > 900 && credential.RoleSessionExpiration < 3600 {
+			signer.credentialExpiration = credential.RoleSessionExpiration
+		} else {
+			err = errors.NewClientError(errors.InvalidParamCode, "Assume Role session duration should be in the range of 15min - 1Hr", nil)
+		}
+	} else {
+		signer.credentialExpiration = defaultDurationSeconds
+	}
+	return
+}
+
+func (*SignerStsAssumeRole) GetName() string {
+	return "HMAC-SHA1"
+}
+
+func (*SignerStsAssumeRole) GetType() string {
+	return ""
+}
+
+func (*SignerStsAssumeRole) GetVersion() string {
+	return "1.0"
+}
+
+func (signer *SignerStsAssumeRole) GetAccessKeyId() string {
+	return signer.credential.AccessKeyId
+}
+
+func (signer *SignerStsAssumeRole) GetExtraParam() map[string]string {
+	return map[string]string{"SecurityToken": signer.credential.RoleArn}
+}
+
+func (signer *SignerStsAssumeRole) Sign(stringToSign, secretSuffix string) string {
+	if signer.sessionCredential == nil || signer.needUpdateCredential() {
+		signer.updateCredential()
+	}
+	secret := signer.credential.AccessKeySecret + secretSuffix
+	return ShaHmac1(stringToSign, secret)
+}
+
+func (signer *SignerStsAssumeRole) buildCommonRequest() (request *requests.CommonRequest, err error) {
+	request = requests.NewCommonRequest()
+	request.Product = "Sts"
+	request.Version = "2015-04-01"
+	request.ApiName = "AssumeRole"
+	request.QueryParams["RoleArn"] = signer.credential.RoleArn
+	request.QueryParams["RoleSessionName"] = signer.credential.RoleSessionName
+	request.QueryParams["DurationSeconds"] = strconv.Itoa(signer.credentialExpiration)
+	return
+}
+
+func (signer *SignerStsAssumeRole) refreshCredential(response *responses.CommonResponse) (err error) {
+	if response.GetHttpStatus() != http.StatusOK {
+		message := "refresh session token failed, message = " + response.GetHttpContentString()
+		err = errors.NewServerError(response.GetHttpStatus(), response.GetOriginHttpResponse().Status, message)
+		return
+	}
+	var data interface{}
+	err = json.Unmarshal(response.GetHttpContentBytes(), data)
+	if err != nil {
+		return
+	}
+	accessKeyId, err := jmespath.Search("AssumeRoleResponse.Credentials.AccessKeyId", data)
+	if err != nil {
+		return
+	}
+	accessKeySecret, err := jmespath.Search("AssumeRoleResponse.Credentials.AccessKeySecret", data)
+	if err != nil {
+		return
+	}
+	securityToken, err := jmespath.Search("AssumeRoleResponse.Credentials.SecurityToken", data)
+	if err != nil {
+		return
+	}
+	signer.sessionCredential = &sessionCredential{
+		accessKeyId:     accessKeyId.(string),
+		accessKeySecret: accessKeySecret.(string),
+		securityToken:   securityToken.(string),
+	}
+	return
+}
+
+func (signer *SignerStsAssumeRole) Shutdown() {
+
+}

+ 58 - 0
sdk/auth/signers/signer_v1.go

@@ -0,0 +1,58 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signers
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+)
+
+type SignerV1 struct {
+	credential *credentials.BaseCredential
+}
+
+func (signer *SignerV1) GetExtraParam() map[string]string {
+	return nil
+}
+
+func NewSignerV1(credential *credentials.BaseCredential) (*SignerV1, error) {
+	return &SignerV1{
+		credential: credential,
+	}, nil
+}
+
+func (*SignerV1) GetName() string {
+	return "HMAC-SHA1"
+}
+
+func (*SignerV1) GetType() string {
+	return ""
+}
+
+func (*SignerV1) GetVersion() string {
+	return "1.0"
+}
+
+func (signer *SignerV1) GetAccessKeyId() string {
+	return signer.credential.AccessKeyId
+}
+
+func (signer *SignerV1) Sign(stringToSign, secretSuffix string) string {
+	secret := signer.credential.AccessKeySecret + secretSuffix
+	return ShaHmac1(stringToSign, secret)
+}
+
+func (signer *SignerV1) Shutdown() {
+
+}

+ 185 - 0
sdk/client.go

@@ -0,0 +1,185 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sdk
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+	"net/http"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
+)
+
+// this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
+var Version = "0.0.1"
+
+type Client struct {
+	regionId       string
+	config         *Config
+	signer         auth.Signer
+	httpClient     *http.Client
+	asyncTaskQueue chan func()
+
+	debug     bool
+	isRunning bool
+}
+
+func (client *Client) Init() (err error) {
+	panic("not support yet")
+}
+
+func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) {
+	client.isRunning = true
+	client.regionId = regionId
+	client.config = config
+	client.signer, err = auth.NewSignerWithCredential(credential, client.ProcessCommonRequest)
+	if err != nil {
+		return
+	}
+	client.httpClient = &http.Client{}
+
+	if config.HttpTransport != nil {
+		client.httpClient.Transport = config.HttpTransport
+	}
+
+	if config.Timeout > 0 {
+		client.httpClient.Timeout = config.Timeout
+	}
+
+	if config.EnableAsync {
+		client.EnableAsync(config.GoRoutinePoolSize, config.MaxTaskQueueSize)
+	}
+	return
+}
+
+func (client *Client) EnableAsync(routinePoolSize, maxTaskQueueSize int) {
+	client.asyncTaskQueue = make(chan func(), maxTaskQueueSize)
+	for i := 0; i < routinePoolSize; i ++ {
+		go func() {
+			for client.isRunning {
+				select {
+				case task := <-client.asyncTaskQueue:
+					task()
+				}
+			}
+		}()
+	}
+}
+
+func (client *Client) InitWithAccessKey(regionId, accessKeyId, accessKeySecret string) (err error) {
+	config := NewConfig()
+	credential := &credentials.BaseCredential{
+		AccessKeyId:     accessKeyId,
+		AccessKeySecret: accessKeySecret,
+	}
+	return client.InitWithOptions(regionId, config, credential)
+}
+
+func (client *Client) DoAction(request requests.AcsRequest, response responses.AcsResponse) (err error) {
+
+	// add clientVersion
+	request.GetHeaders()["x-sdk-core-version"] = Version
+
+	regionId := client.regionId
+	if len(request.GetRegionId()) > 0 {
+		regionId = request.GetRegionId()
+	}
+
+	// resolve endpoint
+	resolveParam := &endpoints.ResolveParam{
+		Domain:           request.GetDomain(),
+		Product:          request.GetProduct(),
+		RegionId:         client.regionId,
+		LocationProduct:  request.GetLocationServiceCode(),
+		LocationEndpoint: request.GetLocationEndpointType(),
+		CommonApi:        client.ProcessCommonRequest,
+	}
+	endpoint, err := endpoints.Resolve(resolveParam)
+	if err != nil {
+		return
+	}
+	request.SetDomain(endpoint)
+
+	// init request params
+	err = requests.InitParams(request)
+	if err != nil {
+		return
+	}
+
+	// signature
+	err = auth.Sign(request, client.signer, regionId)
+	if err != nil {
+		return
+	}
+
+	requestMethod := request.GetMethod()
+	requestUrl := request.GetUrl()
+	body := request.GetBodyReader()
+	httpRequest, err := http.NewRequest(requestMethod, requestUrl, body)
+	if err != nil {
+		return
+	}
+	for key, value := range request.GetHeaders() {
+		httpRequest.Header.Set(key, value)
+	}
+	httpResponse, err := client.httpClient.Do(httpRequest)
+	if err != nil {
+		return
+	}
+	err = responses.Unmarshal(response, httpResponse, request.GetAcceptFormat())
+	return
+}
+
+func (client *Client) AddAsyncTask(task func()) (err error) {
+	if client.asyncTaskQueue != nil {
+		client.asyncTaskQueue <- task
+	} else {
+		err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil)
+	}
+	return
+}
+
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+func NewClientWithOptions(regionId string, config *Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+func (client *Client) ProcessCommonRequest(request *requests.CommonRequest) (response *responses.CommonResponse, err error) {
+	request.TransToAcsRequest()
+	response = responses.NewCommonResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) Shutdown() {
+	client.signer.Shutdown()
+	close(client.asyncTaskQueue)
+	client.isRunning = false
+}

+ 322 - 0
sdk/client_test.go

@@ -0,0 +1,322 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sdk
+
+import (
+	"encoding/json"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+	"github.com/stretchr/testify/assert"
+	"io/ioutil"
+	"net/http"
+	"os"
+	"os/user"
+	"testing"
+)
+
+var client *Client
+
+type TestConfig struct {
+	AccessKeyId     string
+	AccessKeySecret string
+}
+
+type MockResponse struct {
+	Headers     map[string]string
+	Body        string
+	Params      map[string]string
+	RemoteAddr  string
+	RemoteHost  string
+	QueryString string
+	RequestURL  string
+}
+
+func TestMain(m *testing.M) {
+	testSetup()
+	result := m.Run()
+	testTearDown()
+	os.Exit(result)
+}
+
+func testSetup() {
+	usr, err := user.Current()
+	if err != nil {
+		panic(err)
+	}
+	configFilePath := usr.HomeDir + "/aliyun-sdk.json"
+	data, err := ioutil.ReadFile(configFilePath)
+	if err != nil {
+		panic(err)
+	}
+	var config TestConfig
+	json.Unmarshal(data, &config)
+	client = &Client{}
+	err = client.InitWithAccessKey("cn-hangzhou", config.AccessKeyId, config.AccessKeySecret)
+}
+
+func testTearDown() {
+
+}
+
+func TestNewClientWithAccessKey(t *testing.T) {
+	assert.NotNil(t, client, "NewClientWithAccessKey failed")
+}
+
+func TestRoaGet(t *testing.T) {
+	request := getFtTestRoaRequest()
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "HeaderParamValue", responseBean.Headers["Header-Param"])
+}
+
+func TestRoaPostForm(t *testing.T) {
+	request := getFtTestRoaRequest()
+	request.Method = requests.POST
+	request.FormParams["BodyParam"] = "BodyParamValue"
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "HeaderParamValue", responseBean.Headers["Header-Param"])
+	assert.Equal(t, "BodyParamValue", responseBean.Params["BodyParam"])
+}
+
+func TestRoaPostStream(t *testing.T) {
+	request := getFtTestRoaRequest()
+	request.Method = requests.POST
+	request.Content = []byte("TestContent")
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "HeaderParamValue", responseBean.Headers["Header-Param"])
+	assert.Equal(t, "TestContent", responseBean.Body)
+}
+
+func TestRoaPostJson(t *testing.T) {
+	request := getFtTestRoaRequest()
+	request.Method = requests.POST
+	dataMap := map[string]string{"key": "value"}
+	data, err := json.Marshal(dataMap)
+	assert.Nil(t, err)
+	request.Content = data
+	request.SetContentType(requests.Json)
+
+	response := &responses.BaseResponse{}
+	err = client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "HeaderParamValue", responseBean.Headers["Header-Param"])
+	assert.Equal(t, requests.Json, responseBean.Headers["Content-Type"])
+	assert.Equal(t, string(data), responseBean.Body)
+}
+
+func TestRpcGet(t *testing.T) {
+	request := getFtTestRpcRequest()
+	request.Method = requests.GET
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+}
+
+func TestRpcPost(t *testing.T) {
+	request := getFtTestRpcRequest()
+	request.FormParams["BodyParam"] = "BodyParamValue"
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "BodyParamValue", responseBean.Params["BodyParam"])
+}
+
+func getFtTestRoaRequest() (request *requests.RoaRequest) {
+	request = &requests.RoaRequest{}
+	request.InitWithApiInfo("Ft", "2016-01-02", "TestRoaApi", "/web/cloudapi", "", "")
+	request.Domain = "ft.aliyuncs.com"
+
+	request.Headers["Header-Param"] = "HeaderParamValue"
+	request.QueryParams["QueryParam"] = "QueryParamValue"
+
+	return
+}
+
+func getFtTestRpcRequest() (request *requests.RpcRequest) {
+	request = &requests.RpcRequest{}
+	request.InitWithApiInfo("Ft", "2016-01-01", "TestRpcApi","", "")
+	request.Domain = "ft.aliyuncs.com"
+	request.QueryParams["QueryParam"] = "QueryParamValue"
+	return
+}
+
+func getFtTestRpcRequestForEndpointLocation() (request *requests.RpcRequest) {
+	request = &requests.RpcRequest{}
+	request.InitWithApiInfo("Ft", "2016-01-01", "TestRpcApi","ft", "openAPI")
+	request.RegionId = "cn-hangzhou"
+	request.QueryParams["QueryParam"] = "QueryParamValue"
+	return
+}
+
+func TestCommonRpcRequest(t *testing.T){
+	rpcRequest := requests.NewCommonRequest()
+	rpcRequest.Product = "Ft"
+	rpcRequest.Version = "2016-01-01"
+	rpcRequest.Domain = "ft.aliyuncs.com"
+	rpcRequest.ApiName = "TestRpcApi"
+	rpcRequest.Method = "POST"
+
+	rpcRequest.QueryParams["QueryParam"] = "QueryParamValue"
+	rpcRequest.FormParams["BodyParam"] = "BodyParamValue"
+
+	response,err := client.ProcessCommonRequest(rpcRequest)
+
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "BodyParamValue", responseBean.Params["BodyParam"])
+}
+
+func TestCommonRoaRequest(t *testing.T){
+	roaRequest := requests.NewCommonRequest()
+	roaRequest.Product = "Ft"
+	roaRequest.Version = "2016-01-02"
+	roaRequest.ApiName = "TestRoaApi"
+	roaRequest.PathPattern = "/web/cloudapi"
+	roaRequest.Domain = "ft.aliyuncs.com"
+	roaRequest.Method = "POST"
+
+	roaRequest.QueryParams["QueryParam"] = "QueryParamValue"
+	roaRequest.FormParams["BodyParam"] = "BodyParamValue"
+
+	response,err := client.ProcessCommonRequest(roaRequest)
+
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+	assert.Equal(t, "BodyParamValue", responseBean.Params["BodyParam"])
+}
+
+func TestRpcGetForEndpointXml(t *testing.T) {
+	request := getFtTestRpcRequestForEndpointLocation()
+	request.Method = requests.GET
+	request.RegionId = "cn-shanghai"
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+}
+
+func TestRpcGetForLocation(t *testing.T) {
+	request := getFtTestRpcRequestForEndpointLocation()
+	request.Method = requests.GET
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+}
+
+func TestRpcGetForLocationCache(t *testing.T) {
+	request := getFtTestRpcRequestForEndpointLocation()
+	request.Method = requests.GET
+
+	response := &responses.BaseResponse{}
+	err := client.DoAction(request, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	var responseBean MockResponse
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+
+	request2 := getFtTestRpcRequestForEndpointLocation()
+	request2.Method = requests.GET
+	err = client.DoAction(request2, response)
+	assert.Nil(t, err)
+	assert.Equal(t, http.StatusOK, response.GetHttpStatus(), response.GetHttpContentString())
+	assert.NotNil(t, response.GetHttpContentString())
+
+	json.Unmarshal([]byte(response.GetHttpContentString()), &responseBean)
+
+	assert.Equal(t, "QueryParamValue", responseBean.Params["QueryParam"])
+}

+ 49 - 0
sdk/config.go

@@ -0,0 +1,49 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package sdk
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
+	"net/http"
+	"time"
+)
+
+type Config struct {
+	AutoRetry         bool            `default:"true"`
+	MaxRetryTime      int             `default:"3"`
+	UserAgent         string          `default:""`
+	Debug             bool            `default:"false"`
+	Timeout           time.Duration   `default:""`
+	HttpTransport     *http.Transport `default:""`
+	EnableAsync       bool            `default:"false"`
+	MaxTaskQueueSize  int             `default:"1000"`
+	GoRoutinePoolSize int             `default:"5"`
+}
+
+func NewConfig() (config *Config) {
+	config = &Config{}
+	utils.InitStructWithDefaultTag(config)
+	return
+}
+
+func (c *Config) WithTimeout(timeout time.Duration) (*Config) {
+	c.Timeout = timeout
+	return c
+}
+
+func (c *Config) WithDebug(isDebug bool) (*Config) {
+	c.Debug = isDebug
+	return c
+}

+ 4778 - 0
sdk/endpoints/endpoints.xml

@@ -0,0 +1,4778 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Endpoints>
+    <Endpoint name="jp-fudao-1">
+        <RegionIds>
+            <RegionId>jp-fudao-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="me-east-1">
+        <RegionIds>
+            <RegionId>me-east-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.me-east-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs.me-east-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.me-east-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.me-east-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.me-east-1.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="us-east-1">
+        <RegionIds>
+            <RegionId>us-east-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="ap-northeast-1">
+        <RegionIds>
+            <RegionId>ap-northeast-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kvstore</ProductName>
+                <DomainName>r-kvstore.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.ap-northeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-hangzhou-bj-b01">
+        <RegionIds>
+            <RegionId>cn-hangzhou-bj-b01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-hongkong">
+        <RegionIds>
+            <RegionId>cn-hongkong</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-hongkong.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-hongkong.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-hongkong.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hongkong.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-beijing-nu16-b01">
+        <RegionIds>
+            <RegionId>cn-beijing-nu16-b01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-beijing-am13-c01">
+        <RegionIds>
+            <RegionId>cn-beijing-am13-c01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="in-west-antgroup-1">
+        <RegionIds>
+            <RegionId>in-west-antgroup-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-guizhou-gov">
+        <RegionIds>
+            <RegionId>cn-guizhou-gov</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="in-west-antgroup-2">
+        <RegionIds>
+            <RegionId>in-west-antgroup-2</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-qingdao-cm9">
+        <RegionIds>
+            <RegionId>cn-qingdao-cm9</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="tw-snowcloud-kaohsiung">
+        <RegionIds>
+            <RegionId>tw-snowcloud-kaohsiung</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shanghai-finance-1">
+        <RegionIds>
+            <RegionId>cn-shanghai-finance-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-shanghai-finance-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-guizhou">
+        <RegionIds>
+            <RegionId>cn-guizhou</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-qingdao-finance">
+        <RegionIds>
+            <RegionId>cn-qingdao-finance</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-qdjbp-a.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-beijing-gov-1">
+        <RegionIds>
+            <RegionId>cn-beijing-gov-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-haidian-a.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shanghai">
+        <RegionIds>
+            <RegionId>cn-shanghai</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>ARMS</ProductName>
+                <DomainName>arms.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>vod</ProductName>
+                <DomainName>vod.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ft</ProductName>
+                <DomainName>ft.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-inner">
+        <RegionIds>
+            <RegionId>cn-shenzhen-inner</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-fujian">
+        <RegionIds>
+            <RegionId>cn-fujian</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="in-mumbai-alipay">
+        <RegionIds>
+            <RegionId>in-mumbai-alipay</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="us-west-1">
+        <RegionIds>
+            <RegionId>us-west-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.us-west-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.us-west-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-us-west-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shanghai-inner">
+        <RegionIds>
+            <RegionId>cn-shanghai-inner</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-shanghai.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-anhui-gov-1">
+        <RegionIds>
+            <RegionId>cn-anhui-gov-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-hangzhou-finance">
+        <RegionIds>
+            <RegionId>cn-hangzhou-finance</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hzjbp-b-console.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-hangzhou">
+        <RegionIds>
+            <RegionId>cn-hangzhou</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>ARMS</ProductName>
+                <DomainName>arms.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Hpc</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oas</ProductName>
+                <DomainName>cn-hangzhou.oas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>connect</ProductName>
+                <DomainName>connect.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ft</ProductName>
+                <DomainName>ft.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-beijing-inner">
+        <RegionIds>
+            <RegionId>cn-beijing-inner</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-haidian-cm12-c01">
+        <RegionIds>
+            <RegionId>cn-haidian-cm12-c01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-anhui-gov">
+        <RegionIds>
+            <RegionId>cn-anhui-gov</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen">
+        <RegionIds>
+            <RegionId>cn-shenzhen</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>ARMS</ProductName>
+                <DomainName>arms.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchcompute.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oas</ProductName>
+                <DomainName>cn-shenzhen.oas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-shenzhen.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="ap-southeast-2">
+        <RegionIds>
+            <RegionId>ap-southeast-2</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.ap-southeast-2.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.ap-southeast-2.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.ap-southeast-2.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs.ap-southeast-2.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.ap-southeast-2.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-qingdao">
+        <RegionIds>
+            <RegionId>cn-qingdao</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchcompute.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-qingdao.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-su18-b02">
+        <RegionIds>
+            <RegionId>cn-shenzhen-su18-b02</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-su18-b03">
+        <RegionIds>
+            <RegionId>cn-shenzhen-su18-b03</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-su18-b01">
+        <RegionIds>
+            <RegionId>cn-shenzhen-su18-b01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="ap-southeast-antgroup-1">
+        <RegionIds>
+            <RegionId>ap-southeast-antgroup-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="oss-cn-bjzwy">
+        <RegionIds>
+            <RegionId>oss-cn-bjzwy</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-bjzwy.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-henan-am12001">
+        <RegionIds>
+            <RegionId>cn-henan-am12001</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-beijing">
+        <RegionIds>
+            <RegionId>cn-beijing</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>ARMS</ProductName>
+                <DomainName>arms.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oas</ProductName>
+                <DomainName>cn-beijing.oas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Hpc</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>vod</ProductName>
+                <DomainName>vod.cn-beijing.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-hangzhou-d">
+        <RegionIds>
+            <RegionId>cn-hangzhou-d</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-gansu-am6">
+        <RegionIds>
+            <RegionId>cn-gansu-am6</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-ningxiazhongwei">
+        <RegionIds>
+            <RegionId>cn-ningxiazhongwei</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shanghai-et2-b01">
+        <RegionIds>
+            <RegionId>cn-shanghai-et2-b01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace-ops</ProductName>
+                <DomainName>ace-ops.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Acs</ProductName>
+                <DomainName>acs.aliyun-inc.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc-inner</ProductName>
+                <DomainName>vpc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-ningxia-am7-c01">
+        <RegionIds>
+            <RegionId>cn-ningxia-am7-c01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-finance-1">
+        <RegionIds>
+            <RegionId>cn-shenzhen-finance-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.cn-shenzhen-finance-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="ap-southeast-1">
+        <RegionIds>
+            <RegionId>ap-southeast-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>CS</ProductName>
+                <DomainName>cs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Risk</ProductName>
+                <DomainName>risk-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>COS</ProductName>
+                <DomainName>cos.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ess</ProductName>
+                <DomainName>ess.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Billing</ProductName>
+                <DomainName>billing.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dqs</ProductName>
+                <DomainName>dqs.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dds</ProductName>
+                <DomainName>mongodb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alidns</ProductName>
+                <DomainName>alidns.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sms</ProductName>
+                <DomainName>sms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drds</ProductName>
+                <DomainName>drds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dts</ProductName>
+                <DomainName>dts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location</ProductName>
+                <DomainName>location.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msg</ProductName>
+                <DomainName>msg-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ChargingService</ProductName>
+                <DomainName>chargingservice.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>R-kvstore</ProductName>
+                <DomainName>r-kvstore-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Alert</ProductName>
+                <DomainName>alert.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Msc</ProductName>
+                <DomainName>msc-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HighDDos</ProductName>
+                <DomainName>yd-highddos-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundun</ProductName>
+                <DomainName>yundun-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms-inner</ProductName>
+                <DomainName>ubsms-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ocs</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Dm</ProductName>
+                <DomainName>dm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Green</ProductName>
+                <DomainName>green.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Commondriver</ProductName>
+                <DomainName>common.driver.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>oceanbase</ProductName>
+                <DomainName>oceanbase.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Workorder</ProductName>
+                <DomainName>workorder.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Yundunhsm</ProductName>
+                <DomainName>yundunhsm.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Iot</ProductName>
+                <DomainName>iot.ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>HPC</ProductName>
+                <DomainName>hpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>jaq</ProductName>
+                <DomainName>jaq.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oms</ProductName>
+                <DomainName>oms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>live</ProductName>
+                <DomainName>live.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>M-kvstore</ProductName>
+                <DomainName>m-kvstore.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>BatchCompute</ProductName>
+                <DomainName>batchCompute.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>AMS</ProductName>
+                <DomainName>ams.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>ROS</ProductName>
+                <DomainName>ros.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>PTS</ProductName>
+                <DomainName>pts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Qualitycheck</ProductName>
+                <DomainName>qualitycheck.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Bss</ProductName>
+                <DomainName>bss.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ubsms</ProductName>
+                <DomainName>ubsms.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Apigateway</ProductName>
+                <DomainName>apigateway.ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CloudAPI</ProductName>
+                <DomainName>apigateway.ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sts</ProductName>
+                <DomainName>sts.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CmsSiteMonitor</ProductName>
+                <DomainName>sitemonitor.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ace</ProductName>
+                <DomainName>ace.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Mts</ProductName>
+                <DomainName>mts.ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>CF</ProductName>
+                <DomainName>cf.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Crm</ProductName>
+                <DomainName>crm-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Location-inner</ProductName>
+                <DomainName>location-inner.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Aas</ProductName>
+                <DomainName>aas.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Httpdns</ProductName>
+                <DomainName>httpdns-api.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Drc</ProductName>
+                <DomainName>drc.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Push</ProductName>
+                <DomainName>cloudpush.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>YundunDdos</ProductName>
+                <DomainName>inner-yundun-ddos.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Domain</ProductName>
+                <DomainName>domain.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ots</ProductName>
+                <DomainName>ots-pop.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cdn</ProductName>
+                <DomainName>cdn.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ram</ProductName>
+                <DomainName>ram.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Sales</ProductName>
+                <DomainName>sales.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>OssAdmin</ProductName>
+                <DomainName>oss-admin.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ons</ProductName>
+                <DomainName>ons.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Oss</ProductName>
+                <DomainName>oss-ap-southeast-1.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-shenzhen-st4-d01">
+        <RegionIds>
+            <RegionId>cn-shenzhen-st4-d01</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs-cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="eu-central-1">
+        <RegionIds>
+            <RegionId>eu-central-1</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Kms</ProductName>
+                <DomainName>kms.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.eu-central-1.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+    <Endpoint name="cn-zhangjiakou">
+        <RegionIds>
+            <RegionId>cn-zhangjiakou</RegionId>
+        </RegionIds>
+        <Products>
+            <Product>
+                <ProductName>Rds</ProductName>
+                <DomainName>rds.cn-zhangjiakou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Ecs</ProductName>
+                <DomainName>ecs.cn-zhangjiakou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Vpc</ProductName>
+                <DomainName>vpc.cn-zhangjiakou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Cms</ProductName>
+                <DomainName>metrics.cn-hangzhou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Slb</ProductName>
+                <DomainName>slb.cn-zhangjiakou.aliyuncs.com</DomainName>
+            </Product>
+            <Product>
+                <ProductName>Emr</ProductName>
+                <DomainName>emr.cn-zhangjiakou.aliyuncs.com</DomainName>
+            </Product>
+        </Products>
+    </Endpoint>
+</Endpoints>

+ 102 - 0
sdk/endpoints/local_xml_resolver.go

@@ -0,0 +1,102 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package endpoints
+
+import (
+	"encoding/xml"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"sync"
+)
+
+var readXmlOnce sync.Once
+var v = Endpoints{}
+
+type LocalXmlResolver struct {
+}
+
+func (resolver *LocalXmlResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
+	readXmlOnce.Do(func() {
+		dir, _ := os.Getwd()
+
+		file, err := os.Open(dir + "/endpoints/endpoints.xml")
+		if err != nil {
+			fmt.Printf("error: %v", err)
+			support = false
+			return
+		}
+		defer file.Close()
+		data, err := ioutil.ReadAll(file)
+		if err != nil {
+			fmt.Printf("error: %v", err)
+			support = false
+			return
+		}
+
+		err = xml.Unmarshal(data, &v)
+		if err != nil {
+			fmt.Printf("error: %v", err)
+			support = false
+			return
+		}
+	})
+
+	for _, xmlEndpoint := range v.EndpointList {
+		for _, xmlRegionId := range xmlEndpoint.RegionIds.Id {
+			if xmlRegionId == param.RegionId {
+				for _, xmlProduct := range xmlEndpoint.Products.ProductList {
+					if xmlProduct.ProductName == param.Product {
+						endpoint = xmlProduct.DomainName
+						support = true
+						return
+					}
+				}
+			}
+		}
+	}
+
+	support = false
+	return
+}
+
+type Endpoints struct {
+	XMLName      xml.Name   `xml:"Endpoints"`
+	EndpointList []Endpoint `xml:"Endpoint"`
+}
+
+type Endpoint struct {
+	XMLName   xml.Name  `xml:"Endpoint"`
+	Name      string    `xml:"name,attr"`
+	RegionIds RegionIds `xml:"RegionIds"`
+	Products  Products  `xml:"Products"`
+}
+
+type RegionIds struct {
+	Id []string `xml:"RegionId"`
+}
+
+type Products struct {
+	ProductList []Product `xml:"Product"`
+}
+
+type RegionId struct {
+	XMLName string `xml:"RegionId"`
+}
+
+type Product struct {
+	ProductName string `xml:"ProductName"`
+	DomainName  string `xml:"DomainName"`
+}

+ 124 - 0
sdk/endpoints/location_resolver.go

@@ -0,0 +1,124 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package endpoints
+
+import (
+	"encoding/json"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"time"
+)
+
+const (
+	EndpointCacheExpireTime = 3600 //Seconds
+)
+
+var lastClearTimePerProduct map[string]int64 = make(map[string]int64)
+var endpointCache map[string]string = make(map[string]string)
+
+type LocationResolver struct {
+}
+
+func (resolver *LocationResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
+	if len(param.LocationProduct) <= 0 {
+		support = false
+		return
+	}
+
+	//get from cache
+	cacheKey := param.Product + "#" + param.RegionId
+	if endpointCache != nil && len(endpointCache[cacheKey]) > 0 && !CheckCacheIsExpire(cacheKey) {
+		endpoint = endpointCache[cacheKey]
+		support = true
+		return
+	}
+
+	//get from remote
+	getEndpointRequest := requests.NewCommonRequest()
+	getEndpointRequest.Product = "Location"
+	getEndpointRequest.Version = "2015-06-12"
+	getEndpointRequest.ApiName = "DescribeEndpoints"
+	getEndpointRequest.Domain = "location.aliyuncs.com"
+	getEndpointRequest.Method = "GET"
+
+	getEndpointRequest.QueryParams["Id"] = param.RegionId
+	getEndpointRequest.QueryParams["ServiceCode"] = param.LocationProduct
+	if len(param.LocationEndpoint) > 0 {
+		getEndpointRequest.QueryParams["Type"] = param.LocationEndpoint
+	} else {
+		getEndpointRequest.QueryParams["Type"] = "openAPI"
+	}
+
+	response, err := param.CommonApi(getEndpointRequest)
+	//{"Endpoints":{"Endpoint":[{"Protocols":{"Protocols":["HTTP","HTTPS"]},"Type":"openAPI","Namespace":"26842","Id":"cn-hangzhou","SerivceCode":"apigateway","Endpoint":"apigateway.cn-hangzhou.aliyuncs.com"}]},"RequestId":"3287538B-19A0-4550-9995-143C5EDBD955","Success":true}
+	var getEndpointResponse GetEndpointResponse
+	if !response.IsSuccess() {
+		support = false
+		return
+	}
+
+	json.Unmarshal([]byte(response.GetHttpContentString()), &getEndpointResponse)
+	if !getEndpointResponse.Success || getEndpointResponse.Endpoints == nil {
+		support = false
+		return
+	}
+	if len(getEndpointResponse.Endpoints.Endpoint) <= 0 {
+		support = false
+		return
+	}
+	if len(getEndpointResponse.Endpoints.Endpoint[0].Endpoint) > 0 {
+		endpoint = getEndpointResponse.Endpoints.Endpoint[0].Endpoint
+		endpointCache[cacheKey] = endpoint
+		lastClearTimePerProduct[cacheKey] = time.Now().Unix()
+		support = true
+		return
+	}
+
+	support = false
+	return
+}
+
+func CheckCacheIsExpire(cacheKey string) bool {
+	lastClearTime := lastClearTimePerProduct[cacheKey]
+	if lastClearTime <= 0 {
+		lastClearTime = time.Now().Unix()
+		lastClearTimePerProduct[cacheKey] = lastClearTime
+	}
+
+	now := time.Now().Unix()
+	elapsedTime := now - lastClearTime
+	if elapsedTime > EndpointCacheExpireTime {
+		return true
+	}
+
+	return false
+}
+
+type GetEndpointResponse struct {
+	Endpoints *EndpointsObj
+	RequestId string
+	Success   bool
+}
+
+type EndpointsObj struct {
+	Endpoint []EndpointObj
+}
+
+type EndpointObj struct {
+	Protocols   map[string]string
+	Type        string
+	Namespace   string
+	Id          string
+	SerivceCode string
+	Endpoint    string
+}

+ 78 - 0
sdk/endpoints/resolver.go

@@ -0,0 +1,78 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package endpoints
+
+import (
+	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"sync"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"encoding/json"
+)
+
+const (
+	ResolveEndpointUserGuideLink = ""
+)
+
+var once sync.Once
+var resolvers []Resolver
+
+type Resolver interface {
+	TryResolve(param *ResolveParam) (endpoint string, support bool, err error)
+}
+
+func Resolve(param *ResolveParam) (endpoint string, err error) {
+	supportedResolvers := getAllResolvers()
+	for _, resolver := range supportedResolvers {
+		endpoint, supported, err := resolver.TryResolve(param)
+		if supported {
+			return endpoint, err
+		}
+	}
+
+	// not support
+	errorMsg := fmt.Sprintf(errors.CanNotResolveEndpointMessage, param, ResolveEndpointUserGuideLink)
+	err = errors.NewClientError(errors.CanNotResolveEndpointCode, errorMsg, nil)
+	return
+}
+
+func getAllResolvers() []Resolver {
+	once.Do(func() {
+		resolvers = []Resolver{
+			&SimpleHostResolver{},
+			&LocationResolver{},
+			&LocalXmlResolver{},
+		}
+	})
+	return resolvers
+}
+
+type ResolveParam struct {
+	Domain           string
+	Product          string
+	RegionId         string
+	LocationProduct  string
+	LocationEndpoint string
+	CommonApi        func(request *requests.CommonRequest) (response *responses.CommonResponse, err error) `json:"-"`
+}
+
+func (param *ResolveParam) String() string {
+	jsonBytes, err := json.Marshal(param)
+	if err != nil {
+		return fmt.Sprint("ResolveParam.String() process error:", err)
+	}
+	return string(jsonBytes)
+}

+ 26 - 0
sdk/endpoints/simple_host_resolver.go

@@ -0,0 +1,26 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package endpoints
+
+type SimpleHostResolver struct {
+}
+
+func (resolver *SimpleHostResolver) TryResolve(param *ResolveParam) (endpoint string, support bool, err error) {
+	if support = len(param.Domain) > 0; support {
+		endpoint = param.Domain
+	}
+	return
+}
+

+ 80 - 0
sdk/errors/client_error.go

@@ -0,0 +1,80 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package errors
+
+const (
+	DefaultClientErrorStatus = 400
+	DefaultClientErrorCode   = "SDK.ClientError"
+
+	UnsupportedCredentialCode    = "SDK.UnsupportedCredential"
+	UnsupportedCredentialMessage = "Specified credential (type = %s) is not supported, please check"
+
+	CanNotResolveEndpointCode    = "SDK.CanNotResolveEndpoint"
+	CanNotResolveEndpointMessage = "Can not resolve endpoint(param = %s), please check the user guide\n %s"
+
+	UnsupportedParamPositionCode    = "SDK.UnsupportedParamPosition"
+	UnsupportedParamPositionMessage = "Specified param position (%s) is not supported, please upgrade sdk and retry"
+
+	AsyncFunctionNotEnabledCode    = "SDK.AsyncFunctionNotEnabled"
+	AsyncFunctionNotEnabledMessage = "Async function is not enabled in client, please invoke 'client.EnableAsync' function"
+
+	UnknownRequestTypeCode    = "SDK.UnknownRequestType"
+	UnknownRequestTypeMessage = "Unknown Request Type: %s"
+
+	MissingParamCode = "SDK.MissingParam"
+	InvalidParamCode = "SDK.InvalidParam"
+)
+
+type ClientError struct {
+	errorCode   string
+	message     string
+	originError error
+}
+
+func NewClientError(errorCode, message string, originErr error) Error {
+	return &ClientError{
+		errorCode:   errorCode,
+		message:     message,
+		originError: originErr,
+	}
+}
+
+func (err *ClientError) Error() string {
+	if err.originError != nil {
+		return err.originError.Error()
+	} else {
+		return ""
+	}
+}
+
+func (err *ClientError) OriginError() error {
+	return err.originError
+}
+
+func (*ClientError) HttpStatus() int {
+	return DefaultClientErrorStatus
+}
+
+func (err *ClientError) ErrorCode() string {
+	if err.errorCode == "" {
+		return DefaultClientErrorCode
+	} else {
+		return err.errorCode
+	}
+}
+
+func (err *ClientError) Message() string {
+	return err.message
+}

+ 23 - 0
sdk/errors/error.go

@@ -0,0 +1,23 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package errors
+
+type Error interface {
+	error
+	HttpStatus() int
+	ErrorCode() string
+	Message() string
+	OriginError() error
+}

+ 49 - 0
sdk/errors/server_error.go

@@ -0,0 +1,49 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package errors
+
+type ServerError struct {
+	httpStatus int
+	errorCode  string
+	message    string
+}
+
+func NewServerError(httpStatus int, errorCode, message string) Error {
+	return &ServerError{
+		httpStatus: httpStatus,
+		errorCode:  errorCode,
+		message:    message,
+	}
+}
+
+func (err *ServerError) HttpStatus() int {
+	return err.httpStatus
+}
+
+func (err *ServerError) ErrorCode() string {
+	return err.errorCode
+}
+
+func (err *ServerError) Message() string {
+	return err.message
+}
+
+func (err *ServerError) Error() string {
+	return "SDK.ServerError"
+}
+
+func (err *ServerError) OriginError() error {
+	return nil
+}

+ 258 - 0
sdk/requests/acs_reqeust.go

@@ -0,0 +1,258 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package requests
+
+import (
+	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+	"io"
+	"reflect"
+	"strconv"
+)
+
+const (
+	RPC = "RPC"
+	ROA = "ROA"
+
+	HTTP  = "HTTP"
+	HTTPS = "HTTPS"
+
+	DefaultHttpPort = "80"
+
+	GET     = "GET"
+	PUT     = "PUT"
+	POST    = "POST"
+	DELETE  = "DELETE"
+	HEAD    = "HEAD"
+	OPTIONS = "OPTIONS"
+
+	Json = "application/json"
+	Xml  = "application/xml"
+	Raw  = "application/octet-stream"
+	Form = "application/x-www-form-urlencoded"
+
+	Header = "Header"
+	Query  = "Query"
+	Body   = "Body"
+	Path   = "Path"
+
+	HeaderSeparator = "\n"
+)
+
+// interface
+type AcsRequest interface {
+	GetScheme() string
+	GetMethod() string
+	GetDomain() string
+	GetPort() string
+	GetRegionId() string
+	GetUrl() string
+	GetHeaders() map[string]string
+	GetBodyReader() io.Reader
+	GetStyle() string
+	GetProduct() string
+	GetAcceptFormat() string
+	GetLocationServiceCode() string
+	GetLocationEndpointType() string
+
+	SetDomain(domain string)
+
+	GetQueries() string
+	addHeaderParam(key, value string)
+	addQueryParam(key, value string)
+	addFormParam(key, value string)
+	addPathParam(key, value string)
+}
+
+// base class
+type baseRequest struct {
+	Scheme   string
+	Method   string
+	Domain   string
+	Port     string
+	RegionId string
+
+	product    string
+	version    string
+	actionName string
+
+	acceptFormat string
+
+	QueryParams map[string]string
+	Headers     map[string]string
+	FormParams  map[string]string
+	Content     []byte
+
+	locationServiceCode  string
+	locationEndpointType string
+
+	queries string
+}
+
+func (request *baseRequest) addHeaderParam(key, value string) {
+	request.Headers[key] = value
+}
+
+func (request *baseRequest) addQueryParam(key, value string) {
+	request.QueryParams[key] = value
+}
+
+func (request *baseRequest) addFormParam(key, value string) {
+	request.FormParams[key] = value
+}
+
+func (request *baseRequest) GetAcceptFormat() string {
+	return request.acceptFormat
+}
+
+func (request *baseRequest) GetLocationServiceCode() string {
+	return request.locationServiceCode
+}
+
+func (request *baseRequest) GetLocationEndpointType() string {
+	return request.locationEndpointType
+}
+
+func (request *baseRequest) GetProduct() string {
+	return request.product
+}
+
+func (request *baseRequest) GetScheme() string {
+	return request.Scheme
+}
+
+func (request *baseRequest) GetMethod() string {
+	return request.Method
+}
+
+func (request *baseRequest) GetDomain() string {
+	return request.Domain
+}
+
+func (request *baseRequest) SetDomain(host string) {
+	request.Domain = host
+}
+
+func (request *baseRequest) GetPort() string {
+	return request.Port
+}
+
+func (request *baseRequest) GetRegionId() string {
+	return request.RegionId
+}
+
+func (request *baseRequest) GetHeaders() map[string]string {
+	return request.Headers
+}
+
+func (request *baseRequest) SetContentType(contentType string) {
+	request.Headers["Content-Type"] = contentType
+}
+
+func (request *baseRequest) GetContentType() (contentType string, contains bool) {
+	contentType, contains = request.Headers["Content-Type"]
+	return
+}
+
+func defaultBaseRequest() (request *baseRequest) {
+	request = &baseRequest{
+		Scheme:       HTTP,
+		Port:         DefaultHttpPort,
+		acceptFormat: "JSON",
+		Method:       GET,
+		QueryParams:  make(map[string]string),
+		Headers: map[string]string{
+			"x-sdk-client":      "golang/1.0.0",
+			"x-sdk-invoke-type": "normal",
+		},
+		FormParams: make(map[string]string),
+	}
+	return
+}
+
+func InitParams(request AcsRequest) (err error) {
+	requestValue := reflect.ValueOf(request).Elem()
+	err = flatRepeatedList(requestValue, request, "", "")
+	return
+}
+
+func flatRepeatedList(dataValue reflect.Value, request AcsRequest, position, prefix string) (err error) {
+	dataType := dataValue.Type()
+	for i := 0; i < dataType.NumField(); i++ {
+		field := dataType.Field(i)
+		name, containsNameTag := field.Tag.Lookup("name")
+		fieldPosition := position
+		if fieldPosition == "" {
+			fieldPosition, _ = field.Tag.Lookup("position")
+		}
+		typeTag, containsTypeTag := field.Tag.Lookup("type")
+		if containsNameTag {
+			if !containsTypeTag {
+				// simple param
+				key := prefix + name
+				value := dataValue.Field(i).String()
+				err = addParam(request, fieldPosition, key, value)
+				if err != nil {
+					return
+				}
+			} else if typeTag == "Repeated" {
+				// repeated param
+				repeatedFieldValue := dataValue.Field(i)
+				if repeatedFieldValue.Kind() != reflect.Slice {
+					// possible value: {"[]string", "*[]struct"}, we must call Elem() in the last condition
+					repeatedFieldValue = repeatedFieldValue.Elem()
+				}
+				if repeatedFieldValue.IsValid() && !repeatedFieldValue.IsNil() {
+					for m := 0; m < repeatedFieldValue.Len(); m++ {
+						elementValue := repeatedFieldValue.Index(m)
+						key := prefix + name + "." + strconv.Itoa(m+1)
+						if elementValue.Type().String() == "string" {
+							value := elementValue.String()
+							err = addParam(request, fieldPosition, key, value)
+							if err != nil {
+								return
+							}
+						} else {
+							err = flatRepeatedList(elementValue, request, fieldPosition, key+".")
+							if err != nil {
+								return
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+	return
+}
+
+func addParam(request AcsRequest, position, name, value string) (err error) {
+	if len(value) > 0 {
+		switch position {
+		case Header:
+			request.addHeaderParam(name, value)
+		case Query:
+			request.addQueryParam(name, value)
+		case Path:
+			request.addPathParam(name, value)
+		case Body:
+			request.addFormParam(name, value)
+		default:
+			errMsg := fmt.Sprintf(errors.UnsupportedParamPositionMessage, position)
+			err = errors.NewClientError(errors.UnsupportedParamPositionCode, errMsg, nil)
+		}
+	}
+	return
+}

+ 76 - 0
sdk/requests/common_request.go

@@ -0,0 +1,76 @@
+package requests
+
+import (
+	"io"
+	"strings"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
+)
+
+type CommonRequest struct {
+	*baseRequest
+
+	Version string
+	ApiName string
+	Product string
+
+	// roa params
+	PathPattern string
+	PathParams  map[string]string
+
+	Ontology AcsRequest
+}
+
+func NewCommonRequest() (request *CommonRequest) {
+	request = &CommonRequest{
+		baseRequest: defaultBaseRequest(),
+	}
+	request.Headers["x-sdk-invoke-type"] = "common"
+	request.PathParams = make(map[string]string)
+	return
+}
+
+func (request *CommonRequest) TransToAcsRequest() {
+	if len(request.Version) == 0 {
+		errors.NewClientError(errors.MissingParamCode, "Common request [version] is required", nil)
+	}
+	if len(request.ApiName) == 0 || len(request.PathPattern) == 0 {
+		errors.NewClientError(errors.MissingParamCode, "At least one of [ApiName] and [PathPattern] should has a value", nil)
+	}
+	if len(request.Domain) == 0 || len(request.Product) == 0 {
+		errors.NewClientError(errors.MissingParamCode, "At least one of [Host] and [Product] should has a value", nil)
+	}
+
+	if len(request.PathPattern) > 0 {
+		roaRequest := &RoaRequest{}
+		roaRequest.initWithCommonRequest(request)
+		request.Ontology = roaRequest
+	} else {
+		rpcRequest := &RpcRequest{}
+		rpcRequest.baseRequest = request.baseRequest
+		rpcRequest.product = request.Product
+		rpcRequest.version = request.Version
+		rpcRequest.actionName = request.ApiName
+		request.Ontology = rpcRequest
+	}
+
+}
+
+func (request *CommonRequest) GetUrl() string {
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
+}
+
+func (request *CommonRequest) GetBodyReader() io.Reader {
+	return request.Ontology.GetBodyReader()
+}
+
+func (request *CommonRequest) GetStyle() string {
+	return request.Ontology.GetStyle()
+}
+
+func (request *CommonRequest) GetQueries() string {
+	return request.Ontology.GetQueries()
+}
+
+func (request *CommonRequest) addPathParam(key, value string) {
+	request.PathParams[key] = value
+}

+ 122 - 0
sdk/requests/roa_request.go

@@ -0,0 +1,122 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package requests
+
+import (
+	"bytes"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
+	"io"
+	"sort"
+	"strings"
+)
+
+type RoaRequest struct {
+	*baseRequest
+	pathPattern string
+	PathParams  map[string]string
+}
+
+func (*RoaRequest) GetStyle() string {
+	return ROA
+}
+
+func (request *RoaRequest) GetBodyReader() io.Reader {
+	if request.FormParams != nil && len(request.FormParams) > 0 {
+		formString := utils.GetUrlFormedMap(request.FormParams)
+		return strings.NewReader(formString)
+	} else if len(request.Content) > 0 {
+		return bytes.NewReader(request.Content)
+	} else {
+		return nil
+	}
+}
+
+func (request *RoaRequest) GetQueries() string {
+	if len(request.queries) == 0 {
+		request.buildQueries()
+	}
+	return request.queries
+}
+
+func (request *RoaRequest) buildQueries() {
+	// replace path params with value
+	path := request.pathPattern
+	for key, value := range request.PathParams {
+		path = strings.Replace(path, "["+key+"]", value, 1)
+	}
+
+	queryParams := request.QueryParams
+	// check if path contains params
+	splitArray := strings.Split(path, "?")
+	path = splitArray[0]
+	if len(splitArray) > 1 && len(splitArray[1]) > 0 {
+		queryParams[splitArray[1]] = ""
+	}
+	// sort QueryParams by key
+	var queryKeys []string
+	for key := range queryParams {
+		queryKeys = append(queryKeys, key)
+	}
+	sort.Strings(queryKeys)
+
+	// append urlBuilder
+	urlBuilder := bytes.Buffer{}
+	urlBuilder.WriteString(path)
+	urlBuilder.WriteString("?")
+	for i := 0; i < len(queryKeys); i++ {
+		queryKey := queryKeys[i]
+		urlBuilder.WriteString(queryKey)
+		if value := queryParams[queryKey]; len(value) > 0 {
+			urlBuilder.WriteString("=")
+			urlBuilder.WriteString(value)
+		}
+		if i < len(queryKeys)-1 {
+			urlBuilder.WriteString("&")
+		}
+	}
+	request.queries = urlBuilder.String()
+}
+
+func (request *RoaRequest) GetUrl() string {
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
+}
+
+func (request *RoaRequest) addPathParam(key, value string) {
+	request.PathParams[key] = value
+}
+
+func (request *RoaRequest) InitWithApiInfo(product, version, action, uriPattern, serviceCode, endpointType string) {
+	request.baseRequest = defaultBaseRequest()
+	request.PathParams = make(map[string]string)
+	request.Headers["x-acs-version"] = version
+	request.pathPattern = uriPattern
+	request.locationServiceCode = serviceCode
+	request.locationEndpointType = endpointType
+	//request.product = product
+	//request.version = version
+	//request.actionName = action
+}
+
+func (request *RoaRequest) initWithCommonRequest(commonRequest *CommonRequest) {
+	request.baseRequest = commonRequest.baseRequest
+	request.PathParams = commonRequest.PathParams
+	//request.product = commonRequest.Product
+	//request.version = commonRequest.Version
+	request.Headers["x-acs-version"] = commonRequest.Version
+	//request.actionName = commonRequest.ApiName
+	request.pathPattern = commonRequest.PathPattern
+	request.locationServiceCode = ""
+	request.locationEndpointType = ""
+}

+ 75 - 0
sdk/requests/rpc_request.go

@@ -0,0 +1,75 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package requests
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
+	"io"
+	"strings"
+)
+
+type RpcRequest struct {
+	*baseRequest
+}
+
+func (request *RpcRequest) init() {
+	request.baseRequest = defaultBaseRequest()
+	request.Method = POST
+}
+
+func (*RpcRequest) GetStyle() string {
+	return RPC
+}
+
+func (request *RpcRequest) GetBodyReader() io.Reader {
+	if request.FormParams != nil && len(request.FormParams) > 0 {
+		formString := utils.GetUrlFormedMap(request.FormParams)
+		return strings.NewReader(formString)
+	} else {
+		return strings.NewReader("")
+	}
+}
+
+func (request *RpcRequest) GetQueries() string {
+	if request.queries == "" {
+		request.queries = "/?" + utils.GetUrlFormedMap(request.QueryParams)
+	}
+	return request.queries
+}
+
+func (request *RpcRequest) GetUrl() string {
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
+}
+
+func (request *RpcRequest) GetVersion() string {
+	return request.version
+}
+
+func (request *RpcRequest) GetActionName() string {
+	return request.actionName
+}
+
+func (request *RpcRequest) addPathParam(key, value string) {
+	panic("not support")
+}
+
+func (request *RpcRequest) InitWithApiInfo(product, version, action, serviceCode, endpointType string) {
+	request.init()
+	request.product = product
+	request.version = version
+	request.actionName = action
+	request.locationServiceCode = serviceCode
+	request.locationEndpointType = endpointType
+}

+ 124 - 0
sdk/responses/response.go

@@ -0,0 +1,124 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package responses
+
+import (
+	"bytes"
+	"encoding/json"
+	"encoding/xml"
+	"io/ioutil"
+	"net/http"
+	"strconv"
+	"strings"
+	"fmt"
+)
+
+type AcsResponse interface {
+	GetHttpStatus() int
+	GetHttpHeaders() map[string][]string
+	GetHttpContentString() string
+	GetHttpContentBytes() []byte
+	GetOriginHttpResponse() *http.Response
+	parseFromHttpResponse(httpResponse *http.Response) error
+}
+
+func Unmarshal(response AcsResponse, httpResponse *http.Response, format string) (err error) {
+	err = response.parseFromHttpResponse(httpResponse)
+	fmt.Println(response.GetHttpContentString())
+	if err != nil {
+		return
+	}
+	if strings.ToUpper(format) == "JSON" {
+		err = json.Unmarshal(response.GetHttpContentBytes(), response)
+	} else if strings.ToUpper(format) == "XML" {
+		err = xml.Unmarshal(response.GetHttpContentBytes(), response)
+	}
+	return
+}
+
+type BaseResponse struct {
+	httpStatus         int
+	httpHeaders        map[string][]string
+	httpContentString  string
+	httpContentBytes   []byte
+	originHttpResponse *http.Response
+}
+
+func (baseResponse *BaseResponse) GetHttpStatus() int {
+	return baseResponse.httpStatus
+}
+
+func (baseResponse *BaseResponse) GetHttpHeaders() map[string][]string {
+	return baseResponse.httpHeaders
+}
+
+func (baseResponse *BaseResponse) GetHttpContentString() string {
+	return baseResponse.httpContentString
+}
+
+func (baseResponse *BaseResponse) GetHttpContentBytes() []byte {
+	return baseResponse.httpContentBytes
+}
+
+func (baseResponse *BaseResponse) GetOriginHttpResponse() *http.Response {
+	return baseResponse.originHttpResponse
+}
+
+func (baseResponse *BaseResponse) IsSuccess() bool {
+	if baseResponse.GetHttpStatus() >= 200 && baseResponse.GetHttpStatus() < 300 {
+		return true
+	}
+
+	return false
+}
+
+func (baseResponse *BaseResponse) parseFromHttpResponse(httpResponse *http.Response) (err error) {
+	defer httpResponse.Body.Close()
+	body, err := ioutil.ReadAll(httpResponse.Body)
+	if err != nil {
+		return
+	}
+	baseResponse.httpStatus = httpResponse.StatusCode
+	baseResponse.httpHeaders = httpResponse.Header
+	baseResponse.httpContentBytes = body
+	baseResponse.httpContentString = string(body)
+	baseResponse.originHttpResponse = httpResponse
+	return
+}
+
+func (baseResponse *BaseResponse) String() string {
+	resultBuilder := bytes.Buffer{}
+	// statusCode
+	resultBuilder.WriteString("StatusCode : " + strconv.Itoa(baseResponse.httpStatus) + "\n")
+	// httpHeaders
+	resultBuilder.WriteString("Headers:\n")
+	for key, value := range baseResponse.httpHeaders {
+		resultBuilder.WriteString(" -> " + key + " : " + strings.Join(value, ";") + "\n")
+	}
+	// content
+	resultBuilder.WriteString("Content:\n")
+	resultBuilder.WriteString(" -> " + baseResponse.httpContentString + "\n")
+	return resultBuilder.String()
+}
+
+type CommonResponse struct {
+	*BaseResponse
+}
+
+func NewCommonResponse() (request *CommonResponse) {
+	return &CommonResponse{
+		BaseResponse: &BaseResponse{},
+	}
+}

+ 100 - 0
sdk/utils/utils.go

@@ -0,0 +1,100 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package utils
+
+import (
+	"crypto/md5"
+	"encoding/base64"
+	"encoding/hex"
+	"encoding/json"
+	"fmt"
+	"github.com/satori/go.uuid"
+	"net/url"
+	"reflect"
+	"strconv"
+	"time"
+)
+
+func GetUUIDV4() (uuidHex string) {
+	uuidV4 := uuid.NewV4()
+	uuidHex = hex.EncodeToString(uuidV4.Bytes())
+	return
+}
+
+func GetMD5Base64(bytes []byte) (base64Value string) {
+	md5Ctx := md5.New()
+	md5Ctx.Write(bytes)
+	md5Value := md5Ctx.Sum(nil)
+	base64Value = base64.StdEncoding.EncodeToString(md5Value)
+	return
+}
+
+func GetTimeInFormatISO8601() (timeStr string) {
+	gmt, err := time.LoadLocation("GMT")
+	if err != nil {
+		panic(err)
+	}
+	return time.Now().In(gmt).Format("2006-01-02T15:04:05Z")
+}
+
+func GetTimeInFormatRFC2616() (timeStr string) {
+	gmt, err := time.LoadLocation("GMT")
+	if err != nil {
+		panic(err)
+	}
+	return time.Now().In(gmt).Format("Mon, 02 Jan 2006 15:04:05 GMT")
+}
+
+func GetUrlFormedMap(source map[string]string) (urlEncoded string) {
+	urlEncoder := url.Values{}
+	for key, value := range source {
+		urlEncoder.Add(key, value)
+	}
+	urlEncoded = urlEncoder.Encode()
+	return
+}
+
+func GetFromJsonString(jsonString, key string) (result string, err error) {
+	var responseMap map[string]*json.RawMessage
+	err = json.Unmarshal([]byte(jsonString), &responseMap)
+	if err != nil {
+		return
+	}
+	fmt.Println(string(*responseMap[key]))
+	err = json.Unmarshal(*responseMap[key], &result)
+	return
+}
+
+func InitStructWithDefaultTag(bean interface{}) {
+	configType := reflect.TypeOf(bean)
+	for i := 0; i < configType.Elem().NumField(); i++ {
+		field := configType.Elem().Field(i)
+		defaultValue := field.Tag.Get("default")
+		if defaultValue == "" {
+			continue
+		}
+		setter := reflect.ValueOf(bean).Elem().Field(i)
+		switch field.Type.String() {
+		case "int":
+			intValue, _ := strconv.ParseInt(defaultValue, 10, 64)
+			setter.SetInt(intValue)
+		case "string":
+			setter.SetString(defaultValue)
+		case "bool":
+			boolValue, _ := strconv.ParseBool(defaultValue)
+			setter.SetBool(boolValue)
+		}
+	}
+}