摘要:摘要為了更方便的實現(xiàn)彈性的資源創(chuàng)建,方便您一次運行多臺按量實例來完成應用的開發(fā)和部署,我們開放了的批量創(chuàng)建實例接口。直到實例狀態(tài)變成結束創(chuàng)建流程。自動釋放時間按照標準表示,并需要使用時間。
摘要: 為了更方便的實現(xiàn)彈性的資源創(chuàng)建,方便您一次運行多臺ECS按量實例來完成應用的開發(fā)和部署,我們開放了ECS的批量創(chuàng)建實例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的優(yōu)點: 批量提交一定的ECS實例數(shù)目,如果庫存不足,則直接失敗,避免您創(chuàng)建的實例數(shù)目不能滿足需求而額外產(chǎn)生費用。
為了更方便的實現(xiàn)彈性的資源創(chuàng)建,方便您一次運行多臺ECS按量實例來完成應用的開發(fā)和部署,我們開放了ECS的批量創(chuàng)建實例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的優(yōu)點:
單次可以最多創(chuàng)建100臺實例,避免重復調(diào)用。
批量提交一定的ECS實例數(shù)目,如果庫存不足,則直接失敗,避免您創(chuàng)建的實例數(shù)目不能滿足需求而額外產(chǎn)生費用。
實例創(chuàng)建之后,會自動的開始Start,實例會變成Starting狀態(tài),直至Running,不需要您調(diào)用Start的操作。
創(chuàng)建實例的時候指定了InternetMaxBandwidthOut,則自動為您分配公網(wǎng)IP,不需要您再調(diào)用分配IP的操作。
您可以在創(chuàng)建的時候指定自動釋放時間,自動釋放,不需要您再額外設置自動釋放時間。
您也可以一次創(chuàng)建100臺的SpotInstance,充分滿足您的彈性需求。
創(chuàng)建的參數(shù)保持和CreateInstance保持兼容,提供了Amount來設定創(chuàng)建的個數(shù),提供了AutoReleaseTime來設定自動釋放時間。
創(chuàng)建返回一個InstanceIdSets會記錄相關的InstanceIds,您只需要根據(jù)實例ID輪詢實例狀態(tài)即可。
下文以Python為示例,其他的版本SDK都需要大于4.4.3即可。
安裝ECS Python SDK
首先確保您已經(jīng)具備Python的Runtime,本文中使用的Python版本為2.7+。
pip install aliyun-python-sdk-ecs
如果提示您沒有權限,請切換sudo 繼續(xù)執(zhí)行。
sudo pip install aliyun-python-sdk-ecs
本文使用的sdk版本為4.4.3, 如果您使用是舊版本的sdk,需要你更新下。
批量創(chuàng)建實例
首先創(chuàng)建RunInstancesRequest的實例,然后填入相關需要的參數(shù)即可。
下面的例子創(chuàng)建了2臺實例,并且添加了自動每隔10秒鐘檢查一次實例的運行狀態(tài)。直到實例狀態(tài)變成Running結束創(chuàng)建流程。
# your access key Id ak_id = "YOU_ACCESS_KEY_ID" # your access key secret ak_secret = "YOU_ACCESS_SECRET" region_id = "cn-beijing" # your expected instance type instance_type = "ecs.n4.small" # 選擇的vswitchId vswitch_id = "vws-xxxxx" # 使用的鏡像信息 image_id = "centos_7_03_64_20G_alibase_20170818.vhd" # 當前vpc類型的安全組 security_group_id = "sg-xxxxx" # instance number to lunch, support 1-100, default value is 100 amount = 2; # instance auto delete time 按照 ISO8601 標準表示,并需要使用 UTC 時間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當前時間之后半小時。最長不能超過當前時間起三年 auto_release_time = "2017-12-05T22:40:00Z" clt = client.AcsClient(ak_id, ak_secret, "cn-beijing") # create instance automatic running def batch_create_instance(): request = build_request() request.set_Amount(amount) _execute_request(request) def _execute_request(request): response = _send_request(request) if response.get("Code") is None: instance_ids = response.get("InstanceIdSets").get("InstanceIdSet") running_amount = 0 while running_amount < amount: time.sleep(10) running_amount = check_instance_running(instance_ids) print("ecs instance %s is running", instance_ids) def check_instance_running(instance_ids): request = DescribeInstancesRequest() request.set_InstanceIds(json.dumps(instance_ids)) response = _send_request(request) if response.get("Code") is None: instances_list = response.get("Instances").get("Instance") running_count = 0 for instance_detail in instances_list: if instance_detail.get("Status") == "Running": running_count += 1 return running_count def build_request(): request = RunInstancesRequest() request.set_ImageId(image_id) request.set_VSwitchId(vswitch_id) request.set_SecurityGroupId(security_group_id) request.set_InstanceName("Instance12-04") request.set_InstanceType(instance_type) return request # 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)
批量創(chuàng)建實例并自動分配公網(wǎng)IP
相比上面的代碼,我們只需要添加一行屬性,指定公網(wǎng)的帶寬即可。下面的例子中我們默認給實例都分配了1M的按流量帶寬。
# create instance with public ip. def batch_create_instance_with_public_ip(): request = build_request() request.set_Amount(amount) request.set_InternetMaxBandwidthOut(1) _execute_request(request)
批量創(chuàng)建實例并自動設置自動釋放時間
相比上面的代碼,我們只需要添加一行屬性,實例的自動釋放時間即可。 自動釋放時間按照 ISO8601 標準表示,并需要使用 UTC 時間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當前時間之后半小時。最長不能超過當前時間起三年。
# create instance with auto release time. def batch_create_instance_with_auto_release_time(): request = build_request() request.set_Amount(amount) request.set_AutoReleaseTime(auto_release_time) _execute_request(request)
完整代碼如下
# 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 4.4.3, you can use command "pip show aliyun-python-sdk-ecs" to check import json import logging import time from aliyunsdkcore import client from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesRequest 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") # your access key Id ak_id = "YOU_ACCESS_KEY_ID" # your access key secret ak_secret = "YOU_ACCESS_SECRET" region_id = "cn-beijing" # your expected instance type instance_type = "ecs.n4.small" # 選擇的vswitchId vswitch_id = "vws-xxxxx" # 使用的鏡像信息 image_id = "centos_7_03_64_20G_alibase_20170818.vhd" # 當前vpc類型的安全組 security_group_id = "sg-xxxxx" # instance number to lunch, support 1-100, default value is 100 amount = 2; # instance auto delete time 按照 ISO8601 標準表示,并需要使用 UTC 時間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當前時間之后半小時。最長不能超過當前時間起三年 auto_release_time = "2017-12-05T22:40:00Z" clt = client.AcsClient(ak_id, ak_secret, "cn-beijing") # create instance automatic running def batch_create_instance(): request = build_request() request.set_Amount(amount) _execute_request(request) # create instance with public ip. def batch_create_instance_with_public_ip(): request = build_request() request.set_Amount(amount) request.set_InternetMaxBandwidthOut(1) _execute_request(request) # create instance with auto release time. def batch_create_instance_with_auto_release_time(): request = build_request() request.set_Amount(amount) request.set_AutoReleaseTime(auto_release_time) _execute_request(request) def _execute_request(request): response = _send_request(request) if response.get("Code") is None: instance_ids = response.get("InstanceIdSets").get("InstanceIdSet") running_amount = 0 while running_amount < amount: time.sleep(10) running_amount = check_instance_running(instance_ids) print("ecs instance %s is running", instance_ids) def check_instance_running(instance_ids): request = DescribeInstancesRequest() request.set_InstanceIds(json.dumps(instance_ids)) response = _send_request(request) if response.get("Code") is None: instances_list = response.get("Instances").get("Instance") running_count = 0 for instance_detail in instances_list: if instance_detail.get("Status") == "Running": running_count += 1 return running_count def build_request(): request = RunInstancesRequest() request.set_ImageId(image_id) request.set_VSwitchId(vswitch_id) request.set_SecurityGroupId(security_group_id) request.set_InstanceName("Instance12-04") request.set_InstanceType(instance_type) return request # 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__": print "hello ecs batch create instance" # batch_create_instance() # batch_create_instance_with_public_ip() # batch_create_instance_with_auto_release_time()
通過RunInstances將簡化您的資源創(chuàng)建和運行管理。
點此查看原文
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11320.html
摘要:摘要為了更方便的實現(xiàn)彈性的資源創(chuàng)建,方便用戶一次運行多臺按量實例來完成應用的開發(fā)和部署,阿里云開放了的批量創(chuàng)建實例接口,可以單次最多創(chuàng)建臺實例,避免重復調(diào)用和創(chuàng)建。批量創(chuàng)建實例創(chuàng)建的實例,填入相關需要的參數(shù)即可。 摘要: 為了更方便的實現(xiàn)彈性的資源創(chuàng)建,方便用戶一次運行多臺ECS按量實例來完成應用的開發(fā)和部署,阿里云開放了ECS的批量創(chuàng)建實例接口RunInstances,可以單次最多創(chuàng)...
摘要:我們選擇阿里云產(chǎn)品建站的時候,常常面對虛擬主機輕量應用服務器云服務器模板建站不知道如何選擇,下面就比較下這幾個阿里云建站產(chǎn)品的優(yōu)勢和劣勢以及各自適合的用戶,以供參考。獨享云虛擬主機獨享資源,空間超大,不限流量,更高配置,企業(yè)建站首選。我們選擇阿里云產(chǎn)品建站的時候,常常面對虛擬主機,輕量應用服務器,ECS云服務器,模板建站不知道如何選擇,下面就比較下這幾個阿里云建站產(chǎn)品的優(yōu)勢和劣勢以及各自適合...
摘要:輕量級云服務器如何使用實例的用法與普通彈性計算實例一樣便捷,用戶可以使用控制臺或者方式配置和購買服務。阿里云發(fā)布了國內(nèi)首個公共云上的輕量級GPU異構計算產(chǎn)品——VGN5i實例,該實例打破了傳統(tǒng)直通模式的局限,可以提供比單顆物理GPU更細粒度的服務,從而讓客戶以更低成本、更高彈性開展業(yè)務。適用于云游戲、VR/AR、AI推理和DL教學等輕量級GPU計算場景,更細粒度的GPU計算服務。 輕量級GP...
閱讀 1236·2021-11-23 09:51
閱讀 683·2021-11-19 09:40
閱讀 1347·2021-10-11 10:58
閱讀 2356·2021-09-30 09:47
閱讀 3729·2021-09-22 15:55
閱讀 2164·2021-09-03 10:49
閱讀 1259·2021-09-03 10:33
閱讀 701·2019-08-29 17:12