彈性管理 ECS 實例
獲取 RAM 子賬號 AK 密鑰
使用API管理ECS實例,您需要能訪問ECS資源的API密鑰(AccessKey ID 和 AccessKey Secret)。為了保證云服務的安全,您需要創建一個能訪問ECS資源的RAM用戶,獲取該用戶的AccessKey密鑰,并使用這個RAM用戶和API管理ECS實例。
以下是獲取RAM用戶AccessKey密鑰的操作步驟:
創建RAM用戶并獲取AccessKey密鑰。
直接給RAM用戶授權,授予RAM用戶 管理云服務器服務(ECS)的權限。
安裝 ECS Python SDK
首先確保您已經具備Python的Runtime,本文中使用的Python版本為2.7+。
pip install aliyun-python-sdk-ecs
如果提示您沒有權限,請切換sudo繼續執行。
sudo pip install aliyun-python-sdk-ecs
本文使用的SDK版本為 2.1.2。
Hello Alibaba Cloud
創建文件 hello_ecs_api.py。為了使用SDK,首先實例化AcsClient對象,這里需要RAM用戶的AccessKey ID和AccessKey Secret。
AccessKey ID和AccessKey Secret是RAM用戶訪問阿里云ECS服務API的密鑰,具有該賬戶完全的權限,請妥善保管。
from aliyunsdkcore import clientfrom aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequestfrom aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequestclt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')
完成實例化后可以進行第一個應用的開發。查詢當前賬號支持的地域列表。具體的文檔參見 查詢可用地域列表。
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_iddef _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()
在命令行運行 python hello_ecs_api.py 會得到當前支持的 Region列表。類似的輸出如下:
[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']
查詢當前的 Region 下的 ECS 實例列表
查詢實例列表和查詢 Region 列表非常類似,替換入參對象為DescribeInstancesRequest 即可,更多的查詢參數參考 查詢實例列表。
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
新聞熱點
疑難解答