Explorar el Código

Add DescribeInstanceTypes.

sdk-team hace 6 años
padre
commit
d638c7f6dc
Se han modificado 68 ficheros con 3747 adiciones y 0 borrados
  1. 5 0
      ChangeLog.txt
  2. 106 0
      services/ens/allocate_eip_address.go
  3. 106 0
      services/ens/associate_eip_address.go
  4. 109 0
      services/ens/attach_ens_instances.go
  5. 104 0
      services/ens/client.go
  6. 116 0
      services/ens/create_instance.go
  7. 106 0
      services/ens/describe_available_resource.go
  8. 106 0
      services/ens/describe_eip_addresses.go
  9. 107 0
      services/ens/describe_ens_net_district.go
  10. 106 0
      services/ens/describe_ens_regions.go
  11. 106 0
      services/ens/describe_image_infos.go
  12. 115 0
      services/ens/describe_images.go
  13. 106 0
      services/ens/describe_instance_auto_renew_attribute.go
  14. 109 0
      services/ens/describe_instance_monitor_data.go
  15. 109 0
      services/ens/describe_instance_spec.go
  16. 105 0
      services/ens/describe_instance_types.go
  17. 121 0
      services/ens/describe_instances.go
  18. 106 0
      services/ens/describe_reserved_resource.go
  19. 110 0
      services/ens/describe_user_band_width_data.go
  20. 104 0
      services/ens/ens_add_consumer_api.go
  21. 107 0
      services/ens/modify_image_attribute.go
  22. 107 0
      services/ens/modify_instance_attribute.go
  23. 106 0
      services/ens/reboot_instance.go
  24. 105 0
      services/ens/release_eip_address.go
  25. 105 0
      services/ens/start_instance.go
  26. 106 0
      services/ens/stop_instance.go
  27. 21 0
      services/ens/struct_band_width_monitor_data.go
  28. 25 0
      services/ens/struct_band_width_monitor_data_item.go
  29. 21 0
      services/ens/struct_data_disk.go
  30. 29 0
      services/ens/struct_data_disk_item.go
  31. 21 0
      services/ens/struct_data_disk_sizes.go
  32. 22 0
      services/ens/struct_eip_address.go
  33. 21 0
      services/ens/struct_eip_addresses_in_allocate_eip_address.go
  34. 21 0
      services/ens/struct_eip_addresses_in_describe_eip_addresses.go
  35. 26 0
      services/ens/struct_ens_net_district.go
  36. 21 0
      services/ens/struct_ens_net_districts.go
  37. 21 0
      services/ens/struct_ens_regions.go
  38. 25 0
      services/ens/struct_ens_regions_item.go
  39. 31 0
      services/ens/struct_image.go
  40. 21 0
      services/ens/struct_images_in_describe_available_resource.go
  41. 21 0
      services/ens/struct_images_in_describe_image_infos.go
  42. 21 0
      services/ens/struct_images_in_describe_images.go
  43. 21 0
      services/ens/struct_images_in_describe_reserved_resource.go
  44. 21 0
      services/ens/struct_inner_ip_address.go
  45. 41 0
      services/ens/struct_instance.go
  46. 21 0
      services/ens/struct_instance_ids.go
  47. 23 0
      services/ens/struct_instance_monitor_data.go
  48. 23 0
      services/ens/struct_instance_renew_attribute.go
  49. 21 0
      services/ens/struct_instance_renew_attributes.go
  50. 24 0
      services/ens/struct_instance_spec.go
  51. 21 0
      services/ens/struct_instance_specs.go
  52. 24 0
      services/ens/struct_instance_type.go
  53. 21 0
      services/ens/struct_instance_types.go
  54. 21 0
      services/ens/struct_instances.go
  55. 21 0
      services/ens/struct_monitor_data_in_describe_instance_monitor_data.go
  56. 21 0
      services/ens/struct_monitor_data_in_describe_user_band_width_data.go
  57. 23 0
      services/ens/struct_monitor_data_item.go
  58. 23 0
      services/ens/struct_private_ip_address.go
  59. 21 0
      services/ens/struct_private_ip_addresses.go
  60. 23 0
      services/ens/struct_public_ip_address.go
  61. 21 0
      services/ens/struct_public_ip_address_in_describe_instances.go
  62. 21 0
      services/ens/struct_public_ip_addresses.go
  63. 27 0
      services/ens/struct_support_resource.go
  64. 21 0
      services/ens/struct_support_resources_in_describe_available_resource.go
  65. 21 0
      services/ens/struct_support_resources_in_describe_reserved_resource.go
  66. 29 0
      services/ens/struct_system_disk.go
  67. 21 0
      services/ens/struct_system_disk_sizes.go
  68. 106 0
      services/ens/unassociate_eip_address.go

+ 5 - 0
ChangeLog.txt

@@ -1,3 +1,8 @@
+2019-09-05 Version: 1.60.142
+- Add DescribeInstanceTypes.
+- Add DescribeReservedResource.
+- Add DescribeInstances.
+
 2019-09-05 Version: 1.60.141
 - Generated 2019-05-24 for `cusanalytic_sc_online`.
 

+ 106 - 0
services/ens/allocate_eip_address.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AllocateEipAddress invokes the ens.AllocateEipAddress API synchronously
+// api document: https://help.aliyun.com/api/ens/allocateeipaddress.html
+func (client *Client) AllocateEipAddress(request *AllocateEipAddressRequest) (response *AllocateEipAddressResponse, err error) {
+	response = CreateAllocateEipAddressResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AllocateEipAddressWithChan invokes the ens.AllocateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/allocateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AllocateEipAddressWithChan(request *AllocateEipAddressRequest) (<-chan *AllocateEipAddressResponse, <-chan error) {
+	responseChan := make(chan *AllocateEipAddressResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AllocateEipAddress(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AllocateEipAddressWithCallback invokes the ens.AllocateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/allocateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AllocateEipAddressWithCallback(request *AllocateEipAddressRequest, callback func(response *AllocateEipAddressResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AllocateEipAddressResponse
+		var err error
+		defer close(result)
+		response, err = client.AllocateEipAddress(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AllocateEipAddressRequest is the request struct for api AllocateEipAddress
+type AllocateEipAddressRequest struct {
+	*requests.RpcRequest
+	EnsRegionId string           `position:"Query" name:"EnsRegionId"`
+	Count       requests.Integer `position:"Query" name:"Count"`
+	Version     string           `position:"Query" name:"Version"`
+}
+
+// AllocateEipAddressResponse is the response struct for api AllocateEipAddress
+type AllocateEipAddressResponse struct {
+	*responses.BaseResponse
+	RequestId    string                           `json:"RequestId" xml:"RequestId"`
+	EipAddresses EipAddressesInAllocateEipAddress `json:"EipAddresses" xml:"EipAddresses"`
+}
+
+// CreateAllocateEipAddressRequest creates a request to invoke AllocateEipAddress API
+func CreateAllocateEipAddressRequest() (request *AllocateEipAddressRequest) {
+	request = &AllocateEipAddressRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "AllocateEipAddress", "ens", "openAPI")
+	return
+}
+
+// CreateAllocateEipAddressResponse creates a response to parse from AllocateEipAddress response
+func CreateAllocateEipAddressResponse() (response *AllocateEipAddressResponse) {
+	response = &AllocateEipAddressResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/associate_eip_address.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AssociateEipAddress invokes the ens.AssociateEipAddress API synchronously
+// api document: https://help.aliyun.com/api/ens/associateeipaddress.html
+func (client *Client) AssociateEipAddress(request *AssociateEipAddressRequest) (response *AssociateEipAddressResponse, err error) {
+	response = CreateAssociateEipAddressResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AssociateEipAddressWithChan invokes the ens.AssociateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/associateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssociateEipAddressWithChan(request *AssociateEipAddressRequest) (<-chan *AssociateEipAddressResponse, <-chan error) {
+	responseChan := make(chan *AssociateEipAddressResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AssociateEipAddress(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AssociateEipAddressWithCallback invokes the ens.AssociateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/associateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssociateEipAddressWithCallback(request *AssociateEipAddressRequest, callback func(response *AssociateEipAddressResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AssociateEipAddressResponse
+		var err error
+		defer close(result)
+		response, err = client.AssociateEipAddress(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AssociateEipAddressRequest is the request struct for api AssociateEipAddress
+type AssociateEipAddressRequest struct {
+	*requests.RpcRequest
+	Eip                  string `position:"Query" name:"Eip"`
+	EnsRegionId          string `position:"Query" name:"EnsRegionId"`
+	InstanceIdInternetIp string `position:"Query" name:"InstanceIdInternetIp"`
+	Version              string `position:"Query" name:"Version"`
+}
+
+// AssociateEipAddressResponse is the response struct for api AssociateEipAddress
+type AssociateEipAddressResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAssociateEipAddressRequest creates a request to invoke AssociateEipAddress API
+func CreateAssociateEipAddressRequest() (request *AssociateEipAddressRequest) {
+	request = &AssociateEipAddressRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "AssociateEipAddress", "ens", "openAPI")
+	return
+}
+
+// CreateAssociateEipAddressResponse creates a response to parse from AssociateEipAddress response
+func CreateAssociateEipAddressResponse() (response *AssociateEipAddressResponse) {
+	response = &AssociateEipAddressResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ens/attach_ens_instances.go

@@ -0,0 +1,109 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AttachEnsInstances invokes the ens.AttachEnsInstances API synchronously
+// api document: https://help.aliyun.com/api/ens/attachensinstances.html
+func (client *Client) AttachEnsInstances(request *AttachEnsInstancesRequest) (response *AttachEnsInstancesResponse, err error) {
+	response = CreateAttachEnsInstancesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AttachEnsInstancesWithChan invokes the ens.AttachEnsInstances API asynchronously
+// api document: https://help.aliyun.com/api/ens/attachensinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachEnsInstancesWithChan(request *AttachEnsInstancesRequest) (<-chan *AttachEnsInstancesResponse, <-chan error) {
+	responseChan := make(chan *AttachEnsInstancesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AttachEnsInstances(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AttachEnsInstancesWithCallback invokes the ens.AttachEnsInstances API asynchronously
+// api document: https://help.aliyun.com/api/ens/attachensinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachEnsInstancesWithCallback(request *AttachEnsInstancesRequest, callback func(response *AttachEnsInstancesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AttachEnsInstancesResponse
+		var err error
+		defer close(result)
+		response, err = client.AttachEnsInstances(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AttachEnsInstancesRequest is the request struct for api AttachEnsInstances
+type AttachEnsInstancesRequest struct {
+	*requests.RpcRequest
+	Scripts    string `position:"Query" name:"Scripts"`
+	Version    string `position:"Query" name:"Version"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// AttachEnsInstancesResponse is the response struct for api AttachEnsInstances
+type AttachEnsInstancesResponse struct {
+	*responses.BaseResponse
+	RequestId          string `json:"RequestId" xml:"RequestId"`
+	Code               int    `json:"Code" xml:"Code"`
+	EnsServiceId       string `json:"EnsServiceId" xml:"EnsServiceId"`
+	NetLevel           string `json:"NetLevel" xml:"NetLevel"`
+	BuyResourcesDetail string `json:"BuyResourcesDetail" xml:"BuyResourcesDetail"`
+}
+
+// CreateAttachEnsInstancesRequest creates a request to invoke AttachEnsInstances API
+func CreateAttachEnsInstancesRequest() (request *AttachEnsInstancesRequest) {
+	request = &AttachEnsInstancesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "AttachEnsInstances", "ens", "openAPI")
+	return
+}
+
+// CreateAttachEnsInstancesResponse creates a response to parse from AttachEnsInstances response
+func CreateAttachEnsInstancesResponse() (response *AttachEnsInstancesResponse) {
+	response = &AttachEnsInstancesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/ens/client.go

@@ -0,0 +1,104 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	return
+}

+ 116 - 0
services/ens/create_instance.go

@@ -0,0 +1,116 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateInstance invokes the ens.CreateInstance API synchronously
+// api document: https://help.aliyun.com/api/ens/createinstance.html
+func (client *Client) CreateInstance(request *CreateInstanceRequest) (response *CreateInstanceResponse, err error) {
+	response = CreateCreateInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateInstanceWithChan invokes the ens.CreateInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/createinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateInstanceWithChan(request *CreateInstanceRequest) (<-chan *CreateInstanceResponse, <-chan error) {
+	responseChan := make(chan *CreateInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateInstanceWithCallback invokes the ens.CreateInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/createinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateInstanceWithCallback(request *CreateInstanceRequest, callback func(response *CreateInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateInstanceRequest is the request struct for api CreateInstance
+type CreateInstanceRequest struct {
+	*requests.RpcRequest
+	ImageId            string `position:"Query" name:"ImageId"`
+	Password           string `position:"Query" name:"Password"`
+	EnsRegionId        string `position:"Query" name:"EnsRegionId"`
+	InstanceType       string `position:"Query" name:"InstanceType"`
+	DataDisk1Size      string `position:"Query" name:"DataDisk.1.Size"`
+	AutoRenewPeriod    string `position:"Query" name:"AutoRenewPeriod"`
+	Period             string `position:"Query" name:"Period"`
+	Quantity           string `position:"Query" name:"Quantity"`
+	Version            string `position:"Query" name:"Version"`
+	SystemDiskSize     string `position:"Query" name:"SystemDisk.Size"`
+	AutoRenew          string `position:"Query" name:"AutoRenew"`
+	InternetChargeType string `position:"Query" name:"InternetChargeType"`
+}
+
+// CreateInstanceResponse is the response struct for api CreateInstance
+type CreateInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Code        int         `json:"Code" xml:"Code"`
+	InstanceIds InstanceIds `json:"InstanceIds" xml:"InstanceIds"`
+}
+
+// CreateCreateInstanceRequest creates a request to invoke CreateInstance API
+func CreateCreateInstanceRequest() (request *CreateInstanceRequest) {
+	request = &CreateInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "CreateInstance", "ens", "openAPI")
+	return
+}
+
+// CreateCreateInstanceResponse creates a response to parse from CreateInstance response
+func CreateCreateInstanceResponse() (response *CreateInstanceResponse) {
+	response = &CreateInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_available_resource.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeAvailableResource invokes the ens.DescribeAvailableResource API synchronously
+// api document: https://help.aliyun.com/api/ens/describeavailableresource.html
+func (client *Client) DescribeAvailableResource(request *DescribeAvailableResourceRequest) (response *DescribeAvailableResourceResponse, err error) {
+	response = CreateDescribeAvailableResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAvailableResourceWithChan invokes the ens.DescribeAvailableResource API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeavailableresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAvailableResourceWithChan(request *DescribeAvailableResourceRequest) (<-chan *DescribeAvailableResourceResponse, <-chan error) {
+	responseChan := make(chan *DescribeAvailableResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAvailableResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAvailableResourceWithCallback invokes the ens.DescribeAvailableResource API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeavailableresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAvailableResourceWithCallback(request *DescribeAvailableResourceRequest, callback func(response *DescribeAvailableResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAvailableResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAvailableResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAvailableResourceRequest is the request struct for api DescribeAvailableResource
+type DescribeAvailableResourceRequest struct {
+	*requests.RpcRequest
+	Version string `position:"Query" name:"Version"`
+}
+
+// DescribeAvailableResourceResponse is the response struct for api DescribeAvailableResource
+type DescribeAvailableResourceResponse struct {
+	*responses.BaseResponse
+	RequestId        string                                      `json:"RequestId" xml:"RequestId"`
+	Code             int                                         `json:"Code" xml:"Code"`
+	Images           ImagesInDescribeAvailableResource           `json:"Images" xml:"Images"`
+	SupportResources SupportResourcesInDescribeAvailableResource `json:"SupportResources" xml:"SupportResources"`
+}
+
+// CreateDescribeAvailableResourceRequest creates a request to invoke DescribeAvailableResource API
+func CreateDescribeAvailableResourceRequest() (request *DescribeAvailableResourceRequest) {
+	request = &DescribeAvailableResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeAvailableResource", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeAvailableResourceResponse creates a response to parse from DescribeAvailableResource response
+func CreateDescribeAvailableResourceResponse() (response *DescribeAvailableResourceResponse) {
+	response = &DescribeAvailableResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_eip_addresses.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeEipAddresses invokes the ens.DescribeEipAddresses API synchronously
+// api document: https://help.aliyun.com/api/ens/describeeipaddresses.html
+func (client *Client) DescribeEipAddresses(request *DescribeEipAddressesRequest) (response *DescribeEipAddressesResponse, err error) {
+	response = CreateDescribeEipAddressesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEipAddressesWithChan invokes the ens.DescribeEipAddresses API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeeipaddresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEipAddressesWithChan(request *DescribeEipAddressesRequest) (<-chan *DescribeEipAddressesResponse, <-chan error) {
+	responseChan := make(chan *DescribeEipAddressesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEipAddresses(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEipAddressesWithCallback invokes the ens.DescribeEipAddresses API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeeipaddresses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEipAddressesWithCallback(request *DescribeEipAddressesRequest, callback func(response *DescribeEipAddressesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEipAddressesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEipAddresses(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEipAddressesRequest is the request struct for api DescribeEipAddresses
+type DescribeEipAddressesRequest struct {
+	*requests.RpcRequest
+	Eips        string `position:"Query" name:"Eips"`
+	EnsRegionId string `position:"Query" name:"EnsRegionId"`
+	Version     string `position:"Query" name:"Version"`
+}
+
+// DescribeEipAddressesResponse is the response struct for api DescribeEipAddresses
+type DescribeEipAddressesResponse struct {
+	*responses.BaseResponse
+	RequestId    string                             `json:"RequestId" xml:"RequestId"`
+	EipAddresses EipAddressesInDescribeEipAddresses `json:"EipAddresses" xml:"EipAddresses"`
+}
+
+// CreateDescribeEipAddressesRequest creates a request to invoke DescribeEipAddresses API
+func CreateDescribeEipAddressesRequest() (request *DescribeEipAddressesRequest) {
+	request = &DescribeEipAddressesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeEipAddresses", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeEipAddressesResponse creates a response to parse from DescribeEipAddresses response
+func CreateDescribeEipAddressesResponse() (response *DescribeEipAddressesResponse) {
+	response = &DescribeEipAddressesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/ens/describe_ens_net_district.go

@@ -0,0 +1,107 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeEnsNetDistrict invokes the ens.DescribeEnsNetDistrict API synchronously
+// api document: https://help.aliyun.com/api/ens/describeensnetdistrict.html
+func (client *Client) DescribeEnsNetDistrict(request *DescribeEnsNetDistrictRequest) (response *DescribeEnsNetDistrictResponse, err error) {
+	response = CreateDescribeEnsNetDistrictResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEnsNetDistrictWithChan invokes the ens.DescribeEnsNetDistrict API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeensnetdistrict.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnsNetDistrictWithChan(request *DescribeEnsNetDistrictRequest) (<-chan *DescribeEnsNetDistrictResponse, <-chan error) {
+	responseChan := make(chan *DescribeEnsNetDistrictResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEnsNetDistrict(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEnsNetDistrictWithCallback invokes the ens.DescribeEnsNetDistrict API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeensnetdistrict.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnsNetDistrictWithCallback(request *DescribeEnsNetDistrictRequest, callback func(response *DescribeEnsNetDistrictResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEnsNetDistrictResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEnsNetDistrict(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEnsNetDistrictRequest is the request struct for api DescribeEnsNetDistrict
+type DescribeEnsNetDistrictRequest struct {
+	*requests.RpcRequest
+	NetLevelCode    string `position:"Query" name:"NetLevelCode"`
+	NetDistrictCode string `position:"Query" name:"NetDistrictCode"`
+	Version         string `position:"Query" name:"Version"`
+}
+
+// DescribeEnsNetDistrictResponse is the response struct for api DescribeEnsNetDistrict
+type DescribeEnsNetDistrictResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	Code            int             `json:"Code" xml:"Code"`
+	EnsNetDistricts EnsNetDistricts `json:"EnsNetDistricts" xml:"EnsNetDistricts"`
+}
+
+// CreateDescribeEnsNetDistrictRequest creates a request to invoke DescribeEnsNetDistrict API
+func CreateDescribeEnsNetDistrictRequest() (request *DescribeEnsNetDistrictRequest) {
+	request = &DescribeEnsNetDistrictRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeEnsNetDistrict", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeEnsNetDistrictResponse creates a response to parse from DescribeEnsNetDistrict response
+func CreateDescribeEnsNetDistrictResponse() (response *DescribeEnsNetDistrictResponse) {
+	response = &DescribeEnsNetDistrictResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_ens_regions.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeEnsRegions invokes the ens.DescribeEnsRegions API synchronously
+// api document: https://help.aliyun.com/api/ens/describeensregions.html
+func (client *Client) DescribeEnsRegions(request *DescribeEnsRegionsRequest) (response *DescribeEnsRegionsResponse, err error) {
+	response = CreateDescribeEnsRegionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEnsRegionsWithChan invokes the ens.DescribeEnsRegions API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeensregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnsRegionsWithChan(request *DescribeEnsRegionsRequest) (<-chan *DescribeEnsRegionsResponse, <-chan error) {
+	responseChan := make(chan *DescribeEnsRegionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEnsRegions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEnsRegionsWithCallback invokes the ens.DescribeEnsRegions API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeensregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnsRegionsWithCallback(request *DescribeEnsRegionsRequest, callback func(response *DescribeEnsRegionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEnsRegionsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEnsRegions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEnsRegionsRequest is the request struct for api DescribeEnsRegions
+type DescribeEnsRegionsRequest struct {
+	*requests.RpcRequest
+	EnsRegionId string `position:"Query" name:"EnsRegionId"`
+	Version     string `position:"Query" name:"Version"`
+}
+
+// DescribeEnsRegionsResponse is the response struct for api DescribeEnsRegions
+type DescribeEnsRegionsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       int        `json:"Code" xml:"Code"`
+	EnsRegions EnsRegions `json:"EnsRegions" xml:"EnsRegions"`
+}
+
+// CreateDescribeEnsRegionsRequest creates a request to invoke DescribeEnsRegions API
+func CreateDescribeEnsRegionsRequest() (request *DescribeEnsRegionsRequest) {
+	request = &DescribeEnsRegionsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeEnsRegions", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeEnsRegionsResponse creates a response to parse from DescribeEnsRegions response
+func CreateDescribeEnsRegionsResponse() (response *DescribeEnsRegionsResponse) {
+	response = &DescribeEnsRegionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_image_infos.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeImageInfos invokes the ens.DescribeImageInfos API synchronously
+// api document: https://help.aliyun.com/api/ens/describeimageinfos.html
+func (client *Client) DescribeImageInfos(request *DescribeImageInfosRequest) (response *DescribeImageInfosResponse, err error) {
+	response = CreateDescribeImageInfosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeImageInfosWithChan invokes the ens.DescribeImageInfos API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeimageinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeImageInfosWithChan(request *DescribeImageInfosRequest) (<-chan *DescribeImageInfosResponse, <-chan error) {
+	responseChan := make(chan *DescribeImageInfosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeImageInfos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeImageInfosWithCallback invokes the ens.DescribeImageInfos API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeimageinfos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeImageInfosWithCallback(request *DescribeImageInfosRequest, callback func(response *DescribeImageInfosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeImageInfosResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeImageInfos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeImageInfosRequest is the request struct for api DescribeImageInfos
+type DescribeImageInfosRequest struct {
+	*requests.RpcRequest
+	OsType  string `position:"Query" name:"OsType"`
+	Version string `position:"Query" name:"Version"`
+}
+
+// DescribeImageInfosResponse is the response struct for api DescribeImageInfos
+type DescribeImageInfosResponse struct {
+	*responses.BaseResponse
+	RequestId string                     `json:"RequestId" xml:"RequestId"`
+	Code      int                        `json:"Code" xml:"Code"`
+	Images    ImagesInDescribeImageInfos `json:"Images" xml:"Images"`
+}
+
+// CreateDescribeImageInfosRequest creates a request to invoke DescribeImageInfos API
+func CreateDescribeImageInfosRequest() (request *DescribeImageInfosRequest) {
+	request = &DescribeImageInfosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeImageInfos", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeImageInfosResponse creates a response to parse from DescribeImageInfos response
+func CreateDescribeImageInfosResponse() (response *DescribeImageInfosResponse) {
+	response = &DescribeImageInfosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/ens/describe_images.go

@@ -0,0 +1,115 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeImages invokes the ens.DescribeImages API synchronously
+// api document: https://help.aliyun.com/api/ens/describeimages.html
+func (client *Client) DescribeImages(request *DescribeImagesRequest) (response *DescribeImagesResponse, err error) {
+	response = CreateDescribeImagesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeImagesWithChan invokes the ens.DescribeImages API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeImagesWithChan(request *DescribeImagesRequest) (<-chan *DescribeImagesResponse, <-chan error) {
+	responseChan := make(chan *DescribeImagesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeImages(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeImagesWithCallback invokes the ens.DescribeImages API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeImagesWithCallback(request *DescribeImagesRequest, callback func(response *DescribeImagesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeImagesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeImages(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeImagesRequest is the request struct for api DescribeImages
+type DescribeImagesRequest struct {
+	*requests.RpcRequest
+	ImageId     string `position:"Query" name:"ImageId"`
+	PageNumber  string `position:"Query" name:"PageNumber"`
+	ImageName   string `position:"Query" name:"ImageName"`
+	EnsRegionId string `position:"Query" name:"EnsRegionId"`
+	PageSize    string `position:"Query" name:"PageSize"`
+	Product     string `position:"Query" name:"product"`
+	Version     string `position:"Query" name:"Version"`
+	Status      string `position:"Query" name:"Status"`
+}
+
+// DescribeImagesResponse is the response struct for api DescribeImages
+type DescribeImagesResponse struct {
+	*responses.BaseResponse
+	RequestId  string                 `json:"RequestId" xml:"RequestId"`
+	Code       int                    `json:"Code" xml:"Code"`
+	TotalCount int                    `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int                    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                    `json:"PageSize" xml:"PageSize"`
+	Images     ImagesInDescribeImages `json:"Images" xml:"Images"`
+}
+
+// CreateDescribeImagesRequest creates a request to invoke DescribeImages API
+func CreateDescribeImagesRequest() (request *DescribeImagesRequest) {
+	request = &DescribeImagesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeImages", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeImagesResponse creates a response to parse from DescribeImages response
+func CreateDescribeImagesResponse() (response *DescribeImagesResponse) {
+	response = &DescribeImagesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_instance_auto_renew_attribute.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeInstanceAutoRenewAttribute invokes the ens.DescribeInstanceAutoRenewAttribute API synchronously
+// api document: https://help.aliyun.com/api/ens/describeinstanceautorenewattribute.html
+func (client *Client) DescribeInstanceAutoRenewAttribute(request *DescribeInstanceAutoRenewAttributeRequest) (response *DescribeInstanceAutoRenewAttributeResponse, err error) {
+	response = CreateDescribeInstanceAutoRenewAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstanceAutoRenewAttributeWithChan invokes the ens.DescribeInstanceAutoRenewAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstanceautorenewattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceAutoRenewAttributeWithChan(request *DescribeInstanceAutoRenewAttributeRequest) (<-chan *DescribeInstanceAutoRenewAttributeResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstanceAutoRenewAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstanceAutoRenewAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstanceAutoRenewAttributeWithCallback invokes the ens.DescribeInstanceAutoRenewAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstanceautorenewattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceAutoRenewAttributeWithCallback(request *DescribeInstanceAutoRenewAttributeRequest, callback func(response *DescribeInstanceAutoRenewAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstanceAutoRenewAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstanceAutoRenewAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstanceAutoRenewAttributeRequest is the request struct for api DescribeInstanceAutoRenewAttribute
+type DescribeInstanceAutoRenewAttributeRequest struct {
+	*requests.RpcRequest
+	Version     string `position:"Query" name:"Version"`
+	InstanceIds string `position:"Query" name:"InstanceIds"`
+}
+
+// DescribeInstanceAutoRenewAttributeResponse is the response struct for api DescribeInstanceAutoRenewAttribute
+type DescribeInstanceAutoRenewAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId               string                  `json:"RequestId" xml:"RequestId"`
+	Code                    int                     `json:"Code" xml:"Code"`
+	InstanceRenewAttributes InstanceRenewAttributes `json:"InstanceRenewAttributes" xml:"InstanceRenewAttributes"`
+}
+
+// CreateDescribeInstanceAutoRenewAttributeRequest creates a request to invoke DescribeInstanceAutoRenewAttribute API
+func CreateDescribeInstanceAutoRenewAttributeRequest() (request *DescribeInstanceAutoRenewAttributeRequest) {
+	request = &DescribeInstanceAutoRenewAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeInstanceAutoRenewAttribute", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeInstanceAutoRenewAttributeResponse creates a response to parse from DescribeInstanceAutoRenewAttribute response
+func CreateDescribeInstanceAutoRenewAttributeResponse() (response *DescribeInstanceAutoRenewAttributeResponse) {
+	response = &DescribeInstanceAutoRenewAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ens/describe_instance_monitor_data.go

@@ -0,0 +1,109 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeInstanceMonitorData invokes the ens.DescribeInstanceMonitorData API synchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancemonitordata.html
+func (client *Client) DescribeInstanceMonitorData(request *DescribeInstanceMonitorDataRequest) (response *DescribeInstanceMonitorDataResponse, err error) {
+	response = CreateDescribeInstanceMonitorDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstanceMonitorDataWithChan invokes the ens.DescribeInstanceMonitorData API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancemonitordata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceMonitorDataWithChan(request *DescribeInstanceMonitorDataRequest) (<-chan *DescribeInstanceMonitorDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstanceMonitorDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstanceMonitorData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstanceMonitorDataWithCallback invokes the ens.DescribeInstanceMonitorData API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancemonitordata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceMonitorDataWithCallback(request *DescribeInstanceMonitorDataRequest, callback func(response *DescribeInstanceMonitorDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstanceMonitorDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstanceMonitorData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstanceMonitorDataRequest is the request struct for api DescribeInstanceMonitorData
+type DescribeInstanceMonitorDataRequest struct {
+	*requests.RpcRequest
+	StartTime  string `position:"Query" name:"StartTime"`
+	Period     string `position:"Query" name:"Period"`
+	EndTime    string `position:"Query" name:"EndTime"`
+	Version    string `position:"Query" name:"Version"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// DescribeInstanceMonitorDataResponse is the response struct for api DescribeInstanceMonitorData
+type DescribeInstanceMonitorDataResponse struct {
+	*responses.BaseResponse
+	RequestId   string                                   `json:"RequestId" xml:"RequestId"`
+	Code        int                                      `json:"Code" xml:"Code"`
+	MonitorData MonitorDataInDescribeInstanceMonitorData `json:"MonitorData" xml:"MonitorData"`
+}
+
+// CreateDescribeInstanceMonitorDataRequest creates a request to invoke DescribeInstanceMonitorData API
+func CreateDescribeInstanceMonitorDataRequest() (request *DescribeInstanceMonitorDataRequest) {
+	request = &DescribeInstanceMonitorDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeInstanceMonitorData", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeInstanceMonitorDataResponse creates a response to parse from DescribeInstanceMonitorData response
+func CreateDescribeInstanceMonitorDataResponse() (response *DescribeInstanceMonitorDataResponse) {
+	response = &DescribeInstanceMonitorDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/ens/describe_instance_spec.go

@@ -0,0 +1,109 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeInstanceSpec invokes the ens.DescribeInstanceSpec API synchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancespec.html
+func (client *Client) DescribeInstanceSpec(request *DescribeInstanceSpecRequest) (response *DescribeInstanceSpecResponse, err error) {
+	response = CreateDescribeInstanceSpecResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstanceSpecWithChan invokes the ens.DescribeInstanceSpec API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancespec.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceSpecWithChan(request *DescribeInstanceSpecRequest) (<-chan *DescribeInstanceSpecResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstanceSpecResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstanceSpec(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstanceSpecWithCallback invokes the ens.DescribeInstanceSpec API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancespec.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceSpecWithCallback(request *DescribeInstanceSpecRequest, callback func(response *DescribeInstanceSpecResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstanceSpecResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstanceSpec(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstanceSpecRequest is the request struct for api DescribeInstanceSpec
+type DescribeInstanceSpecRequest struct {
+	*requests.RpcRequest
+	Version string `position:"Query" name:"Version"`
+}
+
+// DescribeInstanceSpecResponse is the response struct for api DescribeInstanceSpec
+type DescribeInstanceSpecResponse struct {
+	*responses.BaseResponse
+	RequestId         string        `json:"RequestId" xml:"RequestId"`
+	Code              int           `json:"Code" xml:"Code"`
+	DataDiskMinSize   int           `json:"DataDiskMinSize" xml:"DataDiskMinSize"`
+	DataDiskMaxSize   int           `json:"DataDiskMaxSize" xml:"DataDiskMaxSize"`
+	SystemDiskMaxSize int           `json:"SystemDiskMaxSize" xml:"SystemDiskMaxSize"`
+	BandwidthLimit    int           `json:"BandwidthLimit" xml:"BandwidthLimit"`
+	InstanceSpecs     InstanceSpecs `json:"InstanceSpecs" xml:"InstanceSpecs"`
+}
+
+// CreateDescribeInstanceSpecRequest creates a request to invoke DescribeInstanceSpec API
+func CreateDescribeInstanceSpecRequest() (request *DescribeInstanceSpecRequest) {
+	request = &DescribeInstanceSpecRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeInstanceSpec", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeInstanceSpecResponse creates a response to parse from DescribeInstanceSpec response
+func CreateDescribeInstanceSpecResponse() (response *DescribeInstanceSpecResponse) {
+	response = &DescribeInstanceSpecResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/ens/describe_instance_types.go

@@ -0,0 +1,105 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeInstanceTypes invokes the ens.DescribeInstanceTypes API synchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancetypes.html
+func (client *Client) DescribeInstanceTypes(request *DescribeInstanceTypesRequest) (response *DescribeInstanceTypesResponse, err error) {
+	response = CreateDescribeInstanceTypesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstanceTypesWithChan invokes the ens.DescribeInstanceTypes API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancetypes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceTypesWithChan(request *DescribeInstanceTypesRequest) (<-chan *DescribeInstanceTypesResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstanceTypesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstanceTypes(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstanceTypesWithCallback invokes the ens.DescribeInstanceTypes API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstancetypes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceTypesWithCallback(request *DescribeInstanceTypesRequest, callback func(response *DescribeInstanceTypesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstanceTypesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstanceTypes(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstanceTypesRequest is the request struct for api DescribeInstanceTypes
+type DescribeInstanceTypesRequest struct {
+	*requests.RpcRequest
+	Version string `position:"Query" name:"Version"`
+}
+
+// DescribeInstanceTypesResponse is the response struct for api DescribeInstanceTypes
+type DescribeInstanceTypesResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	Code          int           `json:"Code" xml:"Code"`
+	InstanceTypes InstanceTypes `json:"InstanceTypes" xml:"InstanceTypes"`
+}
+
+// CreateDescribeInstanceTypesRequest creates a request to invoke DescribeInstanceTypes API
+func CreateDescribeInstanceTypesRequest() (request *DescribeInstanceTypesRequest) {
+	request = &DescribeInstanceTypesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeInstanceTypes", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeInstanceTypesResponse creates a response to parse from DescribeInstanceTypes response
+func CreateDescribeInstanceTypesResponse() (response *DescribeInstanceTypesResponse) {
+	response = &DescribeInstanceTypesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/ens/describe_instances.go

@@ -0,0 +1,121 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeInstances invokes the ens.DescribeInstances API synchronously
+// api document: https://help.aliyun.com/api/ens/describeinstances.html
+func (client *Client) DescribeInstances(request *DescribeInstancesRequest) (response *DescribeInstancesResponse, err error) {
+	response = CreateDescribeInstancesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstancesWithChan invokes the ens.DescribeInstances API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstancesWithChan(request *DescribeInstancesRequest) (<-chan *DescribeInstancesResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstancesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstances(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstancesWithCallback invokes the ens.DescribeInstances API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeinstances.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstancesWithCallback(request *DescribeInstancesRequest, callback func(response *DescribeInstancesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstancesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstances(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstancesRequest is the request struct for api DescribeInstances
+type DescribeInstancesRequest struct {
+	*requests.RpcRequest
+	ImageId              string           `position:"Query" name:"ImageId"`
+	SearchKey            string           `position:"Query" name:"SearchKey"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	OrderByParams        string           `position:"Query" name:"OrderByParams"`
+	EnsRegionId          string           `position:"Query" name:"EnsRegionId"`
+	PageSize             string           `position:"Query" name:"PageSize"`
+	EnsRegionIds         string           `position:"Query" name:"EnsRegionIds"`
+	InstanceResourceType string           `position:"Query" name:"InstanceResourceType"`
+	EnsServiceId         string           `position:"Query" name:"EnsServiceId"`
+	Version              string           `position:"Query" name:"Version"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	InstanceName         string           `position:"Query" name:"InstanceName"`
+	InstanceIds          string           `position:"Query" name:"InstanceIds"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// DescribeInstancesResponse is the response struct for api DescribeInstances
+type DescribeInstancesResponse struct {
+	*responses.BaseResponse
+	RequestId  string    `json:"RequestId" xml:"RequestId"`
+	Code       int       `json:"Code" xml:"Code"`
+	TotalCount int       `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int       `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int       `json:"PageSize" xml:"PageSize"`
+	Instances  Instances `json:"Instances" xml:"Instances"`
+}
+
+// CreateDescribeInstancesRequest creates a request to invoke DescribeInstances API
+func CreateDescribeInstancesRequest() (request *DescribeInstancesRequest) {
+	request = &DescribeInstancesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeInstances", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeInstancesResponse creates a response to parse from DescribeInstances response
+func CreateDescribeInstancesResponse() (response *DescribeInstancesResponse) {
+	response = &DescribeInstancesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/describe_reserved_resource.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeReservedResource invokes the ens.DescribeReservedResource API synchronously
+// api document: https://help.aliyun.com/api/ens/describereservedresource.html
+func (client *Client) DescribeReservedResource(request *DescribeReservedResourceRequest) (response *DescribeReservedResourceResponse, err error) {
+	response = CreateDescribeReservedResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeReservedResourceWithChan invokes the ens.DescribeReservedResource API asynchronously
+// api document: https://help.aliyun.com/api/ens/describereservedresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeReservedResourceWithChan(request *DescribeReservedResourceRequest) (<-chan *DescribeReservedResourceResponse, <-chan error) {
+	responseChan := make(chan *DescribeReservedResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeReservedResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeReservedResourceWithCallback invokes the ens.DescribeReservedResource API asynchronously
+// api document: https://help.aliyun.com/api/ens/describereservedresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeReservedResourceWithCallback(request *DescribeReservedResourceRequest, callback func(response *DescribeReservedResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeReservedResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeReservedResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeReservedResourceRequest is the request struct for api DescribeReservedResource
+type DescribeReservedResourceRequest struct {
+	*requests.RpcRequest
+	Version string `position:"Query" name:"Version"`
+}
+
+// DescribeReservedResourceResponse is the response struct for api DescribeReservedResource
+type DescribeReservedResourceResponse struct {
+	*responses.BaseResponse
+	RequestId        string                                     `json:"RequestId" xml:"RequestId"`
+	Code             int                                        `json:"Code" xml:"Code"`
+	Images           ImagesInDescribeReservedResource           `json:"Images" xml:"Images"`
+	SupportResources SupportResourcesInDescribeReservedResource `json:"SupportResources" xml:"SupportResources"`
+}
+
+// CreateDescribeReservedResourceRequest creates a request to invoke DescribeReservedResource API
+func CreateDescribeReservedResourceRequest() (request *DescribeReservedResourceRequest) {
+	request = &DescribeReservedResourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeReservedResource", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeReservedResourceResponse creates a response to parse from DescribeReservedResource response
+func CreateDescribeReservedResourceResponse() (response *DescribeReservedResourceResponse) {
+	response = &DescribeReservedResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/ens/describe_user_band_width_data.go

@@ -0,0 +1,110 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeUserBandWidthData invokes the ens.DescribeUserBandWidthData API synchronously
+// api document: https://help.aliyun.com/api/ens/describeuserbandwidthdata.html
+func (client *Client) DescribeUserBandWidthData(request *DescribeUserBandWidthDataRequest) (response *DescribeUserBandWidthDataResponse, err error) {
+	response = CreateDescribeUserBandWidthDataResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeUserBandWidthDataWithChan invokes the ens.DescribeUserBandWidthData API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeuserbandwidthdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserBandWidthDataWithChan(request *DescribeUserBandWidthDataRequest) (<-chan *DescribeUserBandWidthDataResponse, <-chan error) {
+	responseChan := make(chan *DescribeUserBandWidthDataResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeUserBandWidthData(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeUserBandWidthDataWithCallback invokes the ens.DescribeUserBandWidthData API asynchronously
+// api document: https://help.aliyun.com/api/ens/describeuserbandwidthdata.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserBandWidthDataWithCallback(request *DescribeUserBandWidthDataRequest, callback func(response *DescribeUserBandWidthDataResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeUserBandWidthDataResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeUserBandWidthData(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeUserBandWidthDataRequest is the request struct for api DescribeUserBandWidthData
+type DescribeUserBandWidthDataRequest struct {
+	*requests.RpcRequest
+	StartTime   string `position:"Query" name:"StartTime"`
+	EnsRegionId string `position:"Query" name:"EnsRegionId"`
+	Period      string `position:"Query" name:"Period"`
+	EndTime     string `position:"Query" name:"EndTime"`
+	Version     string `position:"Query" name:"Version"`
+	InstanceId  string `position:"Query" name:"InstanceId"`
+}
+
+// DescribeUserBandWidthDataResponse is the response struct for api DescribeUserBandWidthData
+type DescribeUserBandWidthDataResponse struct {
+	*responses.BaseResponse
+	RequestId   string            `json:"RequestId" xml:"RequestId"`
+	Code        int               `json:"Code" xml:"Code"`
+	MonitorData []MonitorDataItem `json:"MonitorData" xml:"MonitorData"`
+}
+
+// CreateDescribeUserBandWidthDataRequest creates a request to invoke DescribeUserBandWidthData API
+func CreateDescribeUserBandWidthDataRequest() (request *DescribeUserBandWidthDataRequest) {
+	request = &DescribeUserBandWidthDataRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "DescribeUserBandWidthData", "ens", "openAPI")
+	return
+}
+
+// CreateDescribeUserBandWidthDataResponse creates a response to parse from DescribeUserBandWidthData response
+func CreateDescribeUserBandWidthDataResponse() (response *DescribeUserBandWidthDataResponse) {
+	response = &DescribeUserBandWidthDataResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/ens/ens_add_consumer_api.go

@@ -0,0 +1,104 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// EnsAddConsumerApi invokes the ens.EnsAddConsumerApi API synchronously
+// api document: https://help.aliyun.com/api/ens/ensaddconsumerapi.html
+func (client *Client) EnsAddConsumerApi(request *EnsAddConsumerApiRequest) (response *EnsAddConsumerApiResponse, err error) {
+	response = CreateEnsAddConsumerApiResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// EnsAddConsumerApiWithChan invokes the ens.EnsAddConsumerApi API asynchronously
+// api document: https://help.aliyun.com/api/ens/ensaddconsumerapi.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EnsAddConsumerApiWithChan(request *EnsAddConsumerApiRequest) (<-chan *EnsAddConsumerApiResponse, <-chan error) {
+	responseChan := make(chan *EnsAddConsumerApiResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EnsAddConsumerApi(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// EnsAddConsumerApiWithCallback invokes the ens.EnsAddConsumerApi API asynchronously
+// api document: https://help.aliyun.com/api/ens/ensaddconsumerapi.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EnsAddConsumerApiWithCallback(request *EnsAddConsumerApiRequest, callback func(response *EnsAddConsumerApiResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EnsAddConsumerApiResponse
+		var err error
+		defer close(result)
+		response, err = client.EnsAddConsumerApi(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// EnsAddConsumerApiRequest is the request struct for api EnsAddConsumerApi
+type EnsAddConsumerApiRequest struct {
+	*requests.RpcRequest
+	Version string `position:"Query" name:"Version"`
+}
+
+// EnsAddConsumerApiResponse is the response struct for api EnsAddConsumerApi
+type EnsAddConsumerApiResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateEnsAddConsumerApiRequest creates a request to invoke EnsAddConsumerApi API
+func CreateEnsAddConsumerApiRequest() (request *EnsAddConsumerApiRequest) {
+	request = &EnsAddConsumerApiRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "EnsAddConsumerApi", "ens", "openAPI")
+	return
+}
+
+// CreateEnsAddConsumerApiResponse creates a response to parse from EnsAddConsumerApi response
+func CreateEnsAddConsumerApiResponse() (response *EnsAddConsumerApiResponse) {
+	response = &EnsAddConsumerApiResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/ens/modify_image_attribute.go

@@ -0,0 +1,107 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyImageAttribute invokes the ens.ModifyImageAttribute API synchronously
+// api document: https://help.aliyun.com/api/ens/modifyimageattribute.html
+func (client *Client) ModifyImageAttribute(request *ModifyImageAttributeRequest) (response *ModifyImageAttributeResponse, err error) {
+	response = CreateModifyImageAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyImageAttributeWithChan invokes the ens.ModifyImageAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/modifyimageattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyImageAttributeWithChan(request *ModifyImageAttributeRequest) (<-chan *ModifyImageAttributeResponse, <-chan error) {
+	responseChan := make(chan *ModifyImageAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyImageAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyImageAttributeWithCallback invokes the ens.ModifyImageAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/modifyimageattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyImageAttributeWithCallback(request *ModifyImageAttributeRequest, callback func(response *ModifyImageAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyImageAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyImageAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyImageAttributeRequest is the request struct for api ModifyImageAttribute
+type ModifyImageAttributeRequest struct {
+	*requests.RpcRequest
+	ImageId   string `position:"Query" name:"ImageId"`
+	ImageName string `position:"Query" name:"ImageName"`
+	Product   string `position:"Query" name:"product"`
+	Version   string `position:"Query" name:"Version"`
+}
+
+// ModifyImageAttributeResponse is the response struct for api ModifyImageAttribute
+type ModifyImageAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateModifyImageAttributeRequest creates a request to invoke ModifyImageAttribute API
+func CreateModifyImageAttributeRequest() (request *ModifyImageAttributeRequest) {
+	request = &ModifyImageAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "ModifyImageAttribute", "ens", "openAPI")
+	return
+}
+
+// CreateModifyImageAttributeResponse creates a response to parse from ModifyImageAttribute response
+func CreateModifyImageAttributeResponse() (response *ModifyImageAttributeResponse) {
+	response = &ModifyImageAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/ens/modify_instance_attribute.go

@@ -0,0 +1,107 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyInstanceAttribute invokes the ens.ModifyInstanceAttribute API synchronously
+// api document: https://help.aliyun.com/api/ens/modifyinstanceattribute.html
+func (client *Client) ModifyInstanceAttribute(request *ModifyInstanceAttributeRequest) (response *ModifyInstanceAttributeResponse, err error) {
+	response = CreateModifyInstanceAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyInstanceAttributeWithChan invokes the ens.ModifyInstanceAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/modifyinstanceattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyInstanceAttributeWithChan(request *ModifyInstanceAttributeRequest) (<-chan *ModifyInstanceAttributeResponse, <-chan error) {
+	responseChan := make(chan *ModifyInstanceAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyInstanceAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyInstanceAttributeWithCallback invokes the ens.ModifyInstanceAttribute API asynchronously
+// api document: https://help.aliyun.com/api/ens/modifyinstanceattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyInstanceAttributeWithCallback(request *ModifyInstanceAttributeRequest, callback func(response *ModifyInstanceAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyInstanceAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyInstanceAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyInstanceAttributeRequest is the request struct for api ModifyInstanceAttribute
+type ModifyInstanceAttributeRequest struct {
+	*requests.RpcRequest
+	Password     string `position:"Query" name:"Password"`
+	Version      string `position:"Query" name:"Version"`
+	InstanceId   string `position:"Query" name:"InstanceId"`
+	InstanceName string `position:"Query" name:"InstanceName"`
+}
+
+// ModifyInstanceAttributeResponse is the response struct for api ModifyInstanceAttribute
+type ModifyInstanceAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateModifyInstanceAttributeRequest creates a request to invoke ModifyInstanceAttribute API
+func CreateModifyInstanceAttributeRequest() (request *ModifyInstanceAttributeRequest) {
+	request = &ModifyInstanceAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "ModifyInstanceAttribute", "ens", "openAPI")
+	return
+}
+
+// CreateModifyInstanceAttributeResponse creates a response to parse from ModifyInstanceAttribute response
+func CreateModifyInstanceAttributeResponse() (response *ModifyInstanceAttributeResponse) {
+	response = &ModifyInstanceAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/reboot_instance.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// RebootInstance invokes the ens.RebootInstance API synchronously
+// api document: https://help.aliyun.com/api/ens/rebootinstance.html
+func (client *Client) RebootInstance(request *RebootInstanceRequest) (response *RebootInstanceResponse, err error) {
+	response = CreateRebootInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RebootInstanceWithChan invokes the ens.RebootInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/rebootinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RebootInstanceWithChan(request *RebootInstanceRequest) (<-chan *RebootInstanceResponse, <-chan error) {
+	responseChan := make(chan *RebootInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RebootInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RebootInstanceWithCallback invokes the ens.RebootInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/rebootinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RebootInstanceWithCallback(request *RebootInstanceRequest, callback func(response *RebootInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RebootInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.RebootInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RebootInstanceRequest is the request struct for api RebootInstance
+type RebootInstanceRequest struct {
+	*requests.RpcRequest
+	ForceStop  string `position:"Query" name:"ForceStop"`
+	Version    string `position:"Query" name:"Version"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// RebootInstanceResponse is the response struct for api RebootInstance
+type RebootInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateRebootInstanceRequest creates a request to invoke RebootInstance API
+func CreateRebootInstanceRequest() (request *RebootInstanceRequest) {
+	request = &RebootInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "RebootInstance", "ens", "openAPI")
+	return
+}
+
+// CreateRebootInstanceResponse creates a response to parse from RebootInstance response
+func CreateRebootInstanceResponse() (response *RebootInstanceResponse) {
+	response = &RebootInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/ens/release_eip_address.go

@@ -0,0 +1,105 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ReleaseEipAddress invokes the ens.ReleaseEipAddress API synchronously
+// api document: https://help.aliyun.com/api/ens/releaseeipaddress.html
+func (client *Client) ReleaseEipAddress(request *ReleaseEipAddressRequest) (response *ReleaseEipAddressResponse, err error) {
+	response = CreateReleaseEipAddressResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ReleaseEipAddressWithChan invokes the ens.ReleaseEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/releaseeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ReleaseEipAddressWithChan(request *ReleaseEipAddressRequest) (<-chan *ReleaseEipAddressResponse, <-chan error) {
+	responseChan := make(chan *ReleaseEipAddressResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ReleaseEipAddress(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ReleaseEipAddressWithCallback invokes the ens.ReleaseEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/releaseeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ReleaseEipAddressWithCallback(request *ReleaseEipAddressRequest, callback func(response *ReleaseEipAddressResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ReleaseEipAddressResponse
+		var err error
+		defer close(result)
+		response, err = client.ReleaseEipAddress(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ReleaseEipAddressRequest is the request struct for api ReleaseEipAddress
+type ReleaseEipAddressRequest struct {
+	*requests.RpcRequest
+	Eips        string `position:"Query" name:"Eips"`
+	EnsRegionId string `position:"Query" name:"EnsRegionId"`
+	Version     string `position:"Query" name:"Version"`
+}
+
+// ReleaseEipAddressResponse is the response struct for api ReleaseEipAddress
+type ReleaseEipAddressResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateReleaseEipAddressRequest creates a request to invoke ReleaseEipAddress API
+func CreateReleaseEipAddressRequest() (request *ReleaseEipAddressRequest) {
+	request = &ReleaseEipAddressRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "ReleaseEipAddress", "ens", "openAPI")
+	return
+}
+
+// CreateReleaseEipAddressResponse creates a response to parse from ReleaseEipAddress response
+func CreateReleaseEipAddressResponse() (response *ReleaseEipAddressResponse) {
+	response = &ReleaseEipAddressResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/ens/start_instance.go

@@ -0,0 +1,105 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// StartInstance invokes the ens.StartInstance API synchronously
+// api document: https://help.aliyun.com/api/ens/startinstance.html
+func (client *Client) StartInstance(request *StartInstanceRequest) (response *StartInstanceResponse, err error) {
+	response = CreateStartInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartInstanceWithChan invokes the ens.StartInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/startinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartInstanceWithChan(request *StartInstanceRequest) (<-chan *StartInstanceResponse, <-chan error) {
+	responseChan := make(chan *StartInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartInstanceWithCallback invokes the ens.StartInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/startinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartInstanceWithCallback(request *StartInstanceRequest, callback func(response *StartInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.StartInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartInstanceRequest is the request struct for api StartInstance
+type StartInstanceRequest struct {
+	*requests.RpcRequest
+	Version    string `position:"Query" name:"Version"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// StartInstanceResponse is the response struct for api StartInstance
+type StartInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateStartInstanceRequest creates a request to invoke StartInstance API
+func CreateStartInstanceRequest() (request *StartInstanceRequest) {
+	request = &StartInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "StartInstance", "ens", "openAPI")
+	return
+}
+
+// CreateStartInstanceResponse creates a response to parse from StartInstance response
+func CreateStartInstanceResponse() (response *StartInstanceResponse) {
+	response = &StartInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/ens/stop_instance.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// StopInstance invokes the ens.StopInstance API synchronously
+// api document: https://help.aliyun.com/api/ens/stopinstance.html
+func (client *Client) StopInstance(request *StopInstanceRequest) (response *StopInstanceResponse, err error) {
+	response = CreateStopInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StopInstanceWithChan invokes the ens.StopInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/stopinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopInstanceWithChan(request *StopInstanceRequest) (<-chan *StopInstanceResponse, <-chan error) {
+	responseChan := make(chan *StopInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StopInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StopInstanceWithCallback invokes the ens.StopInstance API asynchronously
+// api document: https://help.aliyun.com/api/ens/stopinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopInstanceWithCallback(request *StopInstanceRequest, callback func(response *StopInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StopInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.StopInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StopInstanceRequest is the request struct for api StopInstance
+type StopInstanceRequest struct {
+	*requests.RpcRequest
+	ForceStop  string `position:"Query" name:"ForceStop"`
+	Version    string `position:"Query" name:"Version"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// StopInstanceResponse is the response struct for api StopInstance
+type StopInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      int    `json:"Code" xml:"Code"`
+}
+
+// CreateStopInstanceRequest creates a request to invoke StopInstance API
+func CreateStopInstanceRequest() (request *StopInstanceRequest) {
+	request = &StopInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "StopInstance", "ens", "openAPI")
+	return
+}
+
+// CreateStopInstanceResponse creates a response to parse from StopInstance response
+func CreateStopInstanceResponse() (response *StopInstanceResponse) {
+	response = &StopInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/ens/struct_band_width_monitor_data.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// BandWidthMonitorData is a nested struct in ens response
+type BandWidthMonitorData struct {
+	BandWidthMonitorDataItem []BandWidthMonitorDataItem `json:"BandWidthMonitorDataItem" xml:"BandWidthMonitorDataItem"`
+}

+ 25 - 0
services/ens/struct_band_width_monitor_data_item.go

@@ -0,0 +1,25 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// BandWidthMonitorDataItem is a nested struct in ens response
+type BandWidthMonitorDataItem struct {
+	UpBandWidth   int    `json:"UpBandWidth" xml:"UpBandWidth"`
+	DownBandWidth int    `json:"DownBandWidth" xml:"DownBandWidth"`
+	InternetTX    int    `json:"InternetTX" xml:"InternetTX"`
+	InternetRX    int    `json:"InternetRX" xml:"InternetRX"`
+	TimeStamp     string `json:"TimeStamp" xml:"TimeStamp"`
+}

+ 21 - 0
services/ens/struct_data_disk.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataDisk is a nested struct in ens response
+type DataDisk struct {
+	DataDiskItem []DataDiskItem `json:"DataDiskItem" xml:"DataDiskItem"`
+}

+ 29 - 0
services/ens/struct_data_disk_item.go

@@ -0,0 +1,29 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataDiskItem is a nested struct in ens response
+type DataDiskItem struct {
+	DeviceType string `json:"device_type" xml:"device_type"`
+	Storage    int    `json:"storage" xml:"storage"`
+	Uuid       string `json:"uuid" xml:"uuid"`
+	DiskType   string `json:"disk_type" xml:"disk_type"`
+	Name       string `json:"name" xml:"name"`
+	Category   string `json:"Category" xml:"Category"`
+	Size       int    `json:"Size" xml:"Size"`
+	DiskId     string `json:"DiskId" xml:"DiskId"`
+	DiskName   string `json:"DiskName" xml:"DiskName"`
+}

+ 21 - 0
services/ens/struct_data_disk_sizes.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DataDiskSizes is a nested struct in ens response
+type DataDiskSizes struct {
+	DataDiskSize []string `json:"DataDiskSize" xml:"DataDiskSize"`
+}

+ 22 - 0
services/ens/struct_eip_address.go

@@ -0,0 +1,22 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EipAddress is a nested struct in ens response
+type EipAddress struct {
+	InstanceIdInternetIp string `json:"InstanceIdInternetIp" xml:"InstanceIdInternetIp"`
+	Eip                  string `json:"Eip" xml:"Eip"`
+}

+ 21 - 0
services/ens/struct_eip_addresses_in_allocate_eip_address.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EipAddressesInAllocateEipAddress is a nested struct in ens response
+type EipAddressesInAllocateEipAddress struct {
+	EipAddress []EipAddress `json:"EipAddress" xml:"EipAddress"`
+}

+ 21 - 0
services/ens/struct_eip_addresses_in_describe_eip_addresses.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EipAddressesInDescribeEipAddresses is a nested struct in ens response
+type EipAddressesInDescribeEipAddresses struct {
+	EipAddress []EipAddress `json:"EipAddress" xml:"EipAddress"`
+}

+ 26 - 0
services/ens/struct_ens_net_district.go

@@ -0,0 +1,26 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EnsNetDistrict is a nested struct in ens response
+type EnsNetDistrict struct {
+	NetDistrictCode       string `json:"NetDistrictCode" xml:"NetDistrictCode"`
+	NetDistrictName       string `json:"NetDistrictName" xml:"NetDistrictName"`
+	NetDistrictFatherCode string `json:"NetDistrictFatherCode" xml:"NetDistrictFatherCode"`
+	EnsRegionIdCount      string `json:"EnsRegionIdCount" xml:"EnsRegionIdCount"`
+	NetDistrictLevel      string `json:"NetDistrictLevel" xml:"NetDistrictLevel"`
+	NetDistrictEnName     string `json:"NetDistrictEnName" xml:"NetDistrictEnName"`
+}

+ 21 - 0
services/ens/struct_ens_net_districts.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EnsNetDistricts is a nested struct in ens response
+type EnsNetDistricts struct {
+	EnsNetDistrict []EnsNetDistrict `json:"EnsNetDistrict" xml:"EnsNetDistrict"`
+}

+ 21 - 0
services/ens/struct_ens_regions.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EnsRegions is a nested struct in ens response
+type EnsRegions struct {
+	EnsRegionsItem []EnsRegionsItem `json:"EnsRegionsItem" xml:"EnsRegionsItem"`
+}

+ 25 - 0
services/ens/struct_ens_regions_item.go

@@ -0,0 +1,25 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EnsRegionsItem is a nested struct in ens response
+type EnsRegionsItem struct {
+	EnsRegionId string `json:"EnsRegionId" xml:"EnsRegionId"`
+	Name        string `json:"Name" xml:"Name"`
+	EnName      string `json:"EnName" xml:"EnName"`
+	Area        string `json:"Area" xml:"Area"`
+	Province    string `json:"Province" xml:"Province"`
+}

+ 31 - 0
services/ens/struct_image.go

@@ -0,0 +1,31 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Image is a nested struct in ens response
+type Image struct {
+	Architecture    string `json:"Architecture" xml:"Architecture"`
+	Platform        string `json:"Platform" xml:"Platform"`
+	ImageVersion    string `json:"ImageVersion" xml:"ImageVersion"`
+	OSType          string `json:"OSType" xml:"OSType"`
+	ImageId         string `json:"ImageId" xml:"ImageId"`
+	OSName          string `json:"OSName" xml:"OSName"`
+	ImageOwnerAlias string `json:"ImageOwnerAlias" xml:"ImageOwnerAlias"`
+	CreationTime    string `json:"CreationTime" xml:"CreationTime"`
+	ImageName       string `json:"ImageName" xml:"ImageName"`
+	Description     string `json:"Description" xml:"Description"`
+	ImageSize       string `json:"ImageSize" xml:"ImageSize"`
+}

+ 21 - 0
services/ens/struct_images_in_describe_available_resource.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInDescribeAvailableResource is a nested struct in ens response
+type ImagesInDescribeAvailableResource struct {
+	Image []Image `json:"Image" xml:"Image"`
+}

+ 21 - 0
services/ens/struct_images_in_describe_image_infos.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInDescribeImageInfos is a nested struct in ens response
+type ImagesInDescribeImageInfos struct {
+	Image []Image `json:"Image" xml:"Image"`
+}

+ 21 - 0
services/ens/struct_images_in_describe_images.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInDescribeImages is a nested struct in ens response
+type ImagesInDescribeImages struct {
+	Image []Image `json:"Image" xml:"Image"`
+}

+ 21 - 0
services/ens/struct_images_in_describe_reserved_resource.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInDescribeReservedResource is a nested struct in ens response
+type ImagesInDescribeReservedResource struct {
+	Image []Image `json:"Image" xml:"Image"`
+}

+ 21 - 0
services/ens/struct_inner_ip_address.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InnerIpAddress is a nested struct in ens response
+type InnerIpAddress struct {
+	IpAddress []string `json:"IpAddress" xml:"IpAddress"`
+}

+ 41 - 0
services/ens/struct_instance.go

@@ -0,0 +1,41 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Instance is a nested struct in ens response
+type Instance struct {
+	InstanceId              string                             `json:"InstanceId" xml:"InstanceId"`
+	InstanceName            string                             `json:"InstanceName" xml:"InstanceName"`
+	EnsRegionId             string                             `json:"EnsRegionId" xml:"EnsRegionId"`
+	Cpu                     string                             `json:"Cpu" xml:"Cpu"`
+	Memory                  int                                `json:"Memory" xml:"Memory"`
+	Disk                    int                                `json:"Disk" xml:"Disk"`
+	InternetMaxBandwidthIn  int                                `json:"InternetMaxBandwidthIn" xml:"InternetMaxBandwidthIn"`
+	InternetMaxBandwidthOut int                                `json:"InternetMaxBandwidthOut" xml:"InternetMaxBandwidthOut"`
+	CreationTime            string                             `json:"CreationTime" xml:"CreationTime"`
+	Status                  string                             `json:"Status" xml:"Status"`
+	ImageId                 string                             `json:"ImageId" xml:"ImageId"`
+	ExpiredTime             string                             `json:"ExpiredTime" xml:"ExpiredTime"`
+	InstanceResourceType    string                             `json:"InstanceResourceType" xml:"InstanceResourceType"`
+	SpecName                string                             `json:"SpecName" xml:"SpecName"`
+	OSName                  string                             `json:"OSName" xml:"OSName"`
+	InnerIpAddress          InnerIpAddress                     `json:"InnerIpAddress" xml:"InnerIpAddress"`
+	PublicIpAddress         PublicIpAddressInDescribeInstances `json:"PublicIpAddress" xml:"PublicIpAddress"`
+	SystemDisk              SystemDisk                         `json:"SystemDisk" xml:"SystemDisk"`
+	DataDisk                DataDisk                           `json:"DataDisk" xml:"DataDisk"`
+	PublicIpAddresses       PublicIpAddresses                  `json:"PublicIpAddresses" xml:"PublicIpAddresses"`
+	PrivateIpAddresses      PrivateIpAddresses                 `json:"PrivateIpAddresses" xml:"PrivateIpAddresses"`
+}

+ 21 - 0
services/ens/struct_instance_ids.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceIds is a nested struct in ens response
+type InstanceIds struct {
+	InstanceId []string `json:"InstanceId" xml:"InstanceId"`
+}

+ 23 - 0
services/ens/struct_instance_monitor_data.go

@@ -0,0 +1,23 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceMonitorData is a nested struct in ens response
+type InstanceMonitorData struct {
+	InstanceId string `json:"InstanceId" xml:"InstanceId"`
+	Memory     string `json:"Memory" xml:"Memory"`
+	CPU        string `json:"CPU" xml:"CPU"`
+}

+ 23 - 0
services/ens/struct_instance_renew_attribute.go

@@ -0,0 +1,23 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceRenewAttribute is a nested struct in ens response
+type InstanceRenewAttribute struct {
+	InstanceId  string `json:"InstanceId" xml:"InstanceId"`
+	AutoRenewal bool   `json:"AutoRenewal" xml:"AutoRenewal"`
+	Duration    string `json:"Duration" xml:"Duration"`
+}

+ 21 - 0
services/ens/struct_instance_renew_attributes.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceRenewAttributes is a nested struct in ens response
+type InstanceRenewAttributes struct {
+	InstanceRenewAttribute []InstanceRenewAttribute `json:"InstanceRenewAttribute" xml:"InstanceRenewAttribute"`
+}

+ 24 - 0
services/ens/struct_instance_spec.go

@@ -0,0 +1,24 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceSpec is a nested struct in ens response
+type InstanceSpec struct {
+	InstanceType string `json:"InstanceType" xml:"InstanceType"`
+	Core         string `json:"Core" xml:"Core"`
+	Memory       string `json:"Memory" xml:"Memory"`
+	DisplayName  string `json:"DisplayName" xml:"DisplayName"`
+}

+ 21 - 0
services/ens/struct_instance_specs.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceSpecs is a nested struct in ens response
+type InstanceSpecs struct {
+	InstanceSpec []InstanceSpec `json:"InstanceSpec" xml:"InstanceSpec"`
+}

+ 24 - 0
services/ens/struct_instance_type.go

@@ -0,0 +1,24 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceType is a nested struct in ens response
+type InstanceType struct {
+	CpuCoreCount     int    `json:"CpuCoreCount" xml:"CpuCoreCount"`
+	MemorySize       int    `json:"MemorySize" xml:"MemorySize"`
+	InstanceTypeId   string `json:"InstanceTypeId" xml:"InstanceTypeId"`
+	InstanceTypeName string `json:"InstanceTypeName" xml:"InstanceTypeName"`
+}

+ 21 - 0
services/ens/struct_instance_types.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// InstanceTypes is a nested struct in ens response
+type InstanceTypes struct {
+	InstanceType []InstanceType `json:"InstanceType" xml:"InstanceType"`
+}

+ 21 - 0
services/ens/struct_instances.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Instances is a nested struct in ens response
+type Instances struct {
+	Instance []Instance `json:"Instance" xml:"Instance"`
+}

+ 21 - 0
services/ens/struct_monitor_data_in_describe_instance_monitor_data.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// MonitorDataInDescribeInstanceMonitorData is a nested struct in ens response
+type MonitorDataInDescribeInstanceMonitorData struct {
+	InstanceMonitorData []InstanceMonitorData `json:"InstanceMonitorData" xml:"InstanceMonitorData"`
+}

+ 21 - 0
services/ens/struct_monitor_data_in_describe_user_band_width_data.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// MonitorDataInDescribeUserBandWidthData is a nested struct in ens response
+type MonitorDataInDescribeUserBandWidthData struct {
+	MonitorDataItem []MonitorDataItem `json:"MonitorDataItem" xml:"MonitorDataItem"`
+}

+ 23 - 0
services/ens/struct_monitor_data_item.go

@@ -0,0 +1,23 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// MonitorDataItem is a nested struct in ens response
+type MonitorDataItem struct {
+	MaxDownBandWidth     string                     `json:"MaxDownBandWidth" xml:"MaxDownBandWidth"`
+	MaxUpBandWidth       string                     `json:"MaxUpBandWidth" xml:"MaxUpBandWidth"`
+	BandWidthMonitorData []BandWidthMonitorDataItem `json:"BandWidthMonitorData" xml:"BandWidthMonitorData"`
+}

+ 23 - 0
services/ens/struct_private_ip_address.go

@@ -0,0 +1,23 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PrivateIpAddress is a nested struct in ens response
+type PrivateIpAddress struct {
+	Ip      string `json:"Ip" xml:"Ip"`
+	GateWay string `json:"GateWay" xml:"GateWay"`
+	Isp     string `json:"Isp" xml:"Isp"`
+}

+ 21 - 0
services/ens/struct_private_ip_addresses.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PrivateIpAddresses is a nested struct in ens response
+type PrivateIpAddresses struct {
+	PrivateIpAddress []PrivateIpAddress `json:"PrivateIpAddress" xml:"PrivateIpAddress"`
+}

+ 23 - 0
services/ens/struct_public_ip_address.go

@@ -0,0 +1,23 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PublicIpAddress is a nested struct in ens response
+type PublicIpAddress struct {
+	Ip      string `json:"Ip" xml:"Ip"`
+	Isp     string `json:"Isp" xml:"Isp"`
+	GateWay string `json:"GateWay" xml:"GateWay"`
+}

+ 21 - 0
services/ens/struct_public_ip_address_in_describe_instances.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PublicIpAddressInDescribeInstances is a nested struct in ens response
+type PublicIpAddressInDescribeInstances struct {
+	IpAddress []string `json:"IpAddress" xml:"IpAddress"`
+}

+ 21 - 0
services/ens/struct_public_ip_addresses.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PublicIpAddresses is a nested struct in ens response
+type PublicIpAddresses struct {
+	PublicIpAddress []PublicIpAddress `json:"PublicIpAddress" xml:"PublicIpAddress"`
+}

+ 27 - 0
services/ens/struct_support_resource.go

@@ -0,0 +1,27 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SupportResource is a nested struct in ens response
+type SupportResource struct {
+	DataDiskSize          string          `json:"DataDiskSize" xml:"DataDiskSize"`
+	InstanceSpec          string          `json:"InstanceSpec" xml:"InstanceSpec"`
+	SystemDiskSize        string          `json:"SystemDiskSize" xml:"SystemDiskSize"`
+	EnsRegionId           string          `json:"EnsRegionId" xml:"EnsRegionId"`
+	SupportResourcesCount string          `json:"SupportResourcesCount" xml:"SupportResourcesCount"`
+	DataDiskSizes         DataDiskSizes   `json:"DataDiskSizes" xml:"DataDiskSizes"`
+	SystemDiskSizes       SystemDiskSizes `json:"SystemDiskSizes" xml:"SystemDiskSizes"`
+}

+ 21 - 0
services/ens/struct_support_resources_in_describe_available_resource.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SupportResourcesInDescribeAvailableResource is a nested struct in ens response
+type SupportResourcesInDescribeAvailableResource struct {
+	SupportResource []SupportResource `json:"SupportResource" xml:"SupportResource"`
+}

+ 21 - 0
services/ens/struct_support_resources_in_describe_reserved_resource.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SupportResourcesInDescribeReservedResource is a nested struct in ens response
+type SupportResourcesInDescribeReservedResource struct {
+	SupportResource []SupportResource `json:"SupportResource" xml:"SupportResource"`
+}

+ 29 - 0
services/ens/struct_system_disk.go

@@ -0,0 +1,29 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SystemDisk is a nested struct in ens response
+type SystemDisk struct {
+	DeviceType string `json:"device_type" xml:"device_type"`
+	Storage    int    `json:"storage" xml:"storage"`
+	Uuid       string `json:"uuid" xml:"uuid"`
+	DiskType   string `json:"disk_type" xml:"disk_type"`
+	Name       string `json:"name" xml:"name"`
+	Category   string `json:"Category" xml:"Category"`
+	Size       int    `json:"Size" xml:"Size"`
+	DiskId     string `json:"DiskId" xml:"DiskId"`
+	DiskName   string `json:"DiskName" xml:"DiskName"`
+}

+ 21 - 0
services/ens/struct_system_disk_sizes.go

@@ -0,0 +1,21 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SystemDiskSizes is a nested struct in ens response
+type SystemDiskSizes struct {
+	SystemDiskSize []string `json:"SystemDiskSize" xml:"SystemDiskSize"`
+}

+ 106 - 0
services/ens/unassociate_eip_address.go

@@ -0,0 +1,106 @@
+package ens
+
+//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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UnassociateEipAddress invokes the ens.UnassociateEipAddress API synchronously
+// api document: https://help.aliyun.com/api/ens/unassociateeipaddress.html
+func (client *Client) UnassociateEipAddress(request *UnassociateEipAddressRequest) (response *UnassociateEipAddressResponse, err error) {
+	response = CreateUnassociateEipAddressResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UnassociateEipAddressWithChan invokes the ens.UnassociateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/unassociateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassociateEipAddressWithChan(request *UnassociateEipAddressRequest) (<-chan *UnassociateEipAddressResponse, <-chan error) {
+	responseChan := make(chan *UnassociateEipAddressResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UnassociateEipAddress(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UnassociateEipAddressWithCallback invokes the ens.UnassociateEipAddress API asynchronously
+// api document: https://help.aliyun.com/api/ens/unassociateeipaddress.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassociateEipAddressWithCallback(request *UnassociateEipAddressRequest, callback func(response *UnassociateEipAddressResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UnassociateEipAddressResponse
+		var err error
+		defer close(result)
+		response, err = client.UnassociateEipAddress(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UnassociateEipAddressRequest is the request struct for api UnassociateEipAddress
+type UnassociateEipAddressRequest struct {
+	*requests.RpcRequest
+	Eip                  string `position:"Query" name:"Eip"`
+	EnsRegionId          string `position:"Query" name:"EnsRegionId"`
+	InstanceIdInternetIp string `position:"Query" name:"InstanceIdInternetIp"`
+	Version              string `position:"Query" name:"Version"`
+}
+
+// UnassociateEipAddressResponse is the response struct for api UnassociateEipAddress
+type UnassociateEipAddressResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUnassociateEipAddressRequest creates a request to invoke UnassociateEipAddress API
+func CreateUnassociateEipAddressRequest() (request *UnassociateEipAddressRequest) {
+	request = &UnassociateEipAddressRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Ens", "2017-11-10", "UnassociateEipAddress", "ens", "openAPI")
+	return
+}
+
+// CreateUnassociateEipAddressResponse creates a response to parse from UnassociateEipAddress response
+func CreateUnassociateEipAddressResponse() (response *UnassociateEipAddressResponse) {
+	response = &UnassociateEipAddressResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}