The content of this article is about how to manage or customize the development of ECS instances through API. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Elastically manage ECS instances
Get the RAM sub-account AK key
To use the API to manage ECS instances, you need to be able to API keys (AccessKey ID and AccessKey Secret) for accessing ECS resources. To ensure the security of cloud services, you need to create a RAM user that can access ECS resources, obtain the user's AccessKey, and use this RAM user and API to manage ECS instances.
The following are the steps to obtain the RAM user AccessKey:
Create a RAM user and obtain the AccessKey.
Directly authorize RAM users and grant RAM users permission to manage cloud server services (ECS).
Install ECS Python SDK
First make sure you have Python's Runtime. The Python version used in this article is 2.7.
pip install aliyun-python-sdk-ecs
If you are prompted that you do not have permission, please switch to sudo to continue execution.
sudo pip install aliyun-python-sdk-ecs
The SDK version used in this article is 2.1.2.
Hello Alibaba Cloud
Create the file hello_ecs_api.py. In order to use the SDK, first instantiate the AcsClient object, which requires the AccessKey ID and AccessKey Secret of the RAM user.
AccessKey ID and AccessKey Secret are the keys for RAM users to access the Alibaba Cloud ECS service API. They have full permissions for the account, so please keep them properly.
from aliyunsdkcore import client from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')
After the instantiation is completed, the first application can be developed. Query the list of regions supported by the current account. For specific documentation, see Query the list of available regions.
def hello_aliyun_regions(): request = DescribeRegionsRequest() response = _send_request(request) region_list = response.get('Regions').get('Region') assert response is not None assert region_list is not None result = map(_print_region_id, region_list) logging.info("region list: %s", result) def _print_region_id(item): region_id = item.get("RegionId") return region_id def _send_request(request): request.set_accept_format('json') try: response_str = clt.do_action(request) logging.info(response_str) response_detail = json.loads(response_str) return response_detail except Exception as e: logging.error(e) hello_aliyun_regions()
Run python hello_ecs_api.py on the command line to get the currently supported Region list. Similar output is as follows:
[u'cn-shenzhen', u'ap-southeast-1', u'cn-qingdao', u'cn-beijing', u'cn-shanghai', u'us-east-1', u'cn-hongkong', u'me-east-1', u'ap-southeast-2', u'cn-hangzhou', u'eu-central-1', u'ap-northeast-1', u'us-west-1']
Query the ECS instance list under the current Region
Querying the instance list is very similar to querying the Region list. Replace The input parameter object is DescribeInstancesRequest. For more query parameters, please refer to the query instance list.
def list_instances(): request = DescribeInstancesRequest() response = _send_request(request) if response is not None: instance_list = response.get('Instances').get('Instance') result = map(_print_instance_id, instance_list) logging.info("current region include instance %s", result) def _print_instance_id(item): instance_id = item.get('InstanceId'); return instance_id
The output result is as follows:
current region include instance [u'i-****', u'i-****'']
For more APIs, refer to the ECS API Overview. You can try to query the disk list and replace the instance parameters with DescribeDisksRequest.
Complete code example
The complete code example for the above operation is as follows.
# coding=utf-8 # if the python sdk is not install using 'sudo pip install aliyun-python-sdk-ecs' # if the python sdk is install using 'sudo pip install --upgrade aliyun-python-sdk-ecs' # make sure the sdk version is 2.1.2, you can use command 'pip show aliyun-python-sdk-ecs' to check import json import logging from aliyunsdkcore import client from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest # configuration the log output formatter, if you want to save the output to file, # append ",filename='ecs_invoke.log'" after datefmt. logging.basicConfig(level=logging.INFO, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S') clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing') # sample api to list aliyun open api. def hello_aliyun_regions(): request = DescribeRegionsRequest() response = _send_request(request) if response is not None: region_list = response.get('Regions').get('Region') assert response is not None assert region_list is not None result = map(_print_region_id, region_list) logging.info("region list: %s", result) # output the instance owned in current region. def list_instances(): request = DescribeInstancesRequest() response = _send_request(request) if response is not None: instance_list = response.get('Instances').get('Instance') result = map(_print_instance_id, instance_list) logging.info("current region include instance %s", result) def _print_instance_id(item): instance_id = item.get('InstanceId'); return instance_id def _print_region_id(item): region_id = item.get("RegionId") return region_id # send open api request def _send_request(request): request.set_accept_format('json') try: response_str = clt.do_action(request) logging.info(response_str) response_detail = json.loads(response_str) return response_detail except Exception as e: logging.error(e) if __name__ == '__main__': logging.info("Hello Aliyun OpenApi!") hello_aliyun_regions() list_instances()
The above is the detailed content of How to manage or custom develop ECS instances via API. For more information, please follow other related articles on the PHP Chinese website!