摘要:摘要為了更方便的實(shí)現(xiàn)彈性的資源創(chuàng)建,方便您一次運(yùn)行多臺(tái)按量實(shí)例來(lái)完成應(yīng)用的開發(fā)和部署,我們開放了的批量創(chuàng)建實(shí)例接口。直到實(shí)例狀態(tài)變成結(jié)束創(chuàng)建流程。自動(dòng)釋放時(shí)間按照標(biāo)準(zhǔn)表示,并需要使用時(shí)間。
摘要: 為了更方便的實(shí)現(xiàn)彈性的資源創(chuàng)建,方便您一次運(yùn)行多臺(tái)ECS按量實(shí)例來(lái)完成應(yīng)用的開發(fā)和部署,我們開放了ECS的批量創(chuàng)建實(shí)例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的優(yōu)點(diǎn): 批量提交一定的ECS實(shí)例數(shù)目,如果庫(kù)存不足,則直接失敗,避免您創(chuàng)建的實(shí)例數(shù)目不能滿足需求而額外產(chǎn)生費(fèi)用。
為了更方便的實(shí)現(xiàn)彈性的資源創(chuàng)建,方便您一次運(yùn)行多臺(tái)ECS按量實(shí)例來(lái)完成應(yīng)用的開發(fā)和部署,我們開放了ECS的批量創(chuàng)建實(shí)例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的優(yōu)點(diǎn):
單次可以最多創(chuàng)建100臺(tái)實(shí)例,避免重復(fù)調(diào)用。
批量提交一定的ECS實(shí)例數(shù)目,如果庫(kù)存不足,則直接失敗,避免您創(chuàng)建的實(shí)例數(shù)目不能滿足需求而額外產(chǎn)生費(fèi)用。
實(shí)例創(chuàng)建之后,會(huì)自動(dòng)的開始Start,實(shí)例會(huì)變成Starting狀態(tài),直至Running,不需要您調(diào)用Start的操作。
創(chuàng)建實(shí)例的時(shí)候指定了InternetMaxBandwidthOut,則自動(dòng)為您分配公網(wǎng)IP,不需要您再調(diào)用分配IP的操作。
您可以在創(chuàng)建的時(shí)候指定自動(dòng)釋放時(shí)間,自動(dòng)釋放,不需要您再額外設(shè)置自動(dòng)釋放時(shí)間。
您也可以一次創(chuàng)建100臺(tái)的SpotInstance,充分滿足您的彈性需求。
創(chuàng)建的參數(shù)保持和CreateInstance保持兼容,提供了Amount來(lái)設(shè)定創(chuàng)建的個(gè)數(shù),提供了AutoReleaseTime來(lái)設(shè)定自動(dòng)釋放時(shí)間。
創(chuàng)建返回一個(gè)InstanceIdSets會(huì)記錄相關(guān)的InstanceIds,您只需要根據(jù)實(shí)例ID輪詢實(shí)例狀態(tài)即可。
下文以Python為示例,其他的版本SDK都需要大于4.4.3即可。
安裝ECS Python SDK
首先確保您已經(jīng)具備Python的Runtime,本文中使用的Python版本為2.7+。
pip install aliyun-python-sdk-ecs
如果提示您沒有權(quán)限,請(qǐng)切換sudo 繼續(xù)執(zhí)行。
sudo pip install aliyun-python-sdk-ecs
本文使用的sdk版本為4.4.3, 如果您使用是舊版本的sdk,需要你更新下。
批量創(chuàng)建實(shí)例
首先創(chuàng)建RunInstancesRequest的實(shí)例,然后填入相關(guān)需要的參數(shù)即可。
下面的例子創(chuàng)建了2臺(tái)實(shí)例,并且添加了自動(dòng)每隔10秒鐘檢查一次實(shí)例的運(yùn)行狀態(tài)。直到實(shí)例狀態(tài)變成Running結(jié)束創(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" # 當(dāng)前vpc類型的安全組 security_group_id = "sg-xxxxx" # instance number to lunch, support 1-100, default value is 100 amount = 2; # instance auto delete time 按照 ISO8601 標(biāo)準(zhǔn)表示,并需要使用 UTC 時(shí)間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當(dāng)前時(shí)間之后半小時(shí)。最長(zhǎng)不能超過(guò)當(dāng)前時(shí)間起三年 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)建實(shí)例并自動(dòng)分配公網(wǎng)IP
相比上面的代碼,我們只需要添加一行屬性,指定公網(wǎng)的帶寬即可。下面的例子中我們默認(rèn)給實(shí)例都分配了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)建實(shí)例并自動(dòng)設(shè)置自動(dòng)釋放時(shí)間
相比上面的代碼,我們只需要添加一行屬性,實(shí)例的自動(dòng)釋放時(shí)間即可。 自動(dòng)釋放時(shí)間按照 ISO8601 標(biāo)準(zhǔn)表示,并需要使用 UTC 時(shí)間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當(dāng)前時(shí)間之后半小時(shí)。最長(zhǎng)不能超過(guò)當(dāng)前時(shí)間起三年。
# 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" # 當(dāng)前vpc類型的安全組 security_group_id = "sg-xxxxx" # instance number to lunch, support 1-100, default value is 100 amount = 2; # instance auto delete time 按照 ISO8601 標(biāo)準(zhǔn)表示,并需要使用 UTC 時(shí)間。格式為 yyyy-MM-ddTHH:mm:ssZ 。 最短在當(dāng)前時(shí)間之后半小時(shí)。最長(zhǎng)不能超過(guò)當(dāng)前時(shí)間起三年 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()
通過(guò)RunInstances將簡(jiǎn)化您的資源創(chuàng)建和運(yùn)行管理。
點(diǎn)此查看原文
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11320.html
摘要:摘要為了更方便的實(shí)現(xiàn)彈性的資源創(chuàng)建,方便用戶一次運(yùn)行多臺(tái)按量實(shí)例來(lái)完成應(yīng)用的開發(fā)和部署,阿里云開放了的批量創(chuàng)建實(shí)例接口,可以單次最多創(chuàng)建臺(tái)實(shí)例,避免重復(fù)調(diào)用和創(chuàng)建。批量創(chuàng)建實(shí)例創(chuàng)建的實(shí)例,填入相關(guān)需要的參數(shù)即可。 摘要: 為了更方便的實(shí)現(xiàn)彈性的資源創(chuàng)建,方便用戶一次運(yùn)行多臺(tái)ECS按量實(shí)例來(lái)完成應(yīng)用的開發(fā)和部署,阿里云開放了ECS的批量創(chuàng)建實(shí)例接口RunInstances,可以單次最多創(chuàng)...
摘要:我們選擇阿里云產(chǎn)品建站的時(shí)候,常常面對(duì)虛擬主機(jī)輕量應(yīng)用服務(wù)器云服務(wù)器模板建站不知道如何選擇,下面就比較下這幾個(gè)阿里云建站產(chǎn)品的優(yōu)勢(shì)和劣勢(shì)以及各自適合的用戶,以供參考。獨(dú)享云虛擬主機(jī)獨(dú)享資源,空間超大,不限流量,更高配置,企業(yè)建站首選。我們選擇阿里云產(chǎn)品建站的時(shí)候,常常面對(duì)虛擬主機(jī),輕量應(yīng)用服務(wù)器,ECS云服務(wù)器,模板建站不知道如何選擇,下面就比較下這幾個(gè)阿里云建站產(chǎn)品的優(yōu)勢(shì)和劣勢(shì)以及各自適合...
摘要:阿里云服務(wù)器支持全球多個(gè)地區(qū)節(jié)點(diǎn),可支持小型電商的出海業(yè)務(wù),云產(chǎn)品隨時(shí)升級(jí)擴(kuò)容,輕松應(yīng)對(duì)高并發(fā),負(fù)載均衡一鍵搭建方便靈活,實(shí)時(shí)防攻擊。為電商企業(yè)保駕護(hù)航。? ? ? ?適用于初創(chuàng)電商公司快速搭建平臺(tái),例如電商網(wǎng)站/APP/電子商城,能輕松承受約5~30萬(wàn)的日均訪問(wèn)量,支持約300-3000單/天的有效成單量。阿里云服務(wù)器ECS支持全球多個(gè)地區(qū)節(jié)點(diǎn),可支持小型電商的出海業(yè)務(wù),云產(chǎn)品隨時(shí)升級(jí)擴(kuò)容...
摘要:輕量級(jí)云服務(wù)器如何使用實(shí)例的用法與普通彈性計(jì)算實(shí)例一樣便捷,用戶可以使用控制臺(tái)或者方式配置和購(gòu)買服務(wù)。阿里云發(fā)布了國(guó)內(nèi)首個(gè)公共云上的輕量級(jí)GPU異構(gòu)計(jì)算產(chǎn)品——VGN5i實(shí)例,該實(shí)例打破了傳統(tǒng)直通模式的局限,可以提供比單顆物理GPU更細(xì)粒度的服務(wù),從而讓客戶以更低成本、更高彈性開展業(yè)務(wù)。適用于云游戲、VR/AR、AI推理和DL教學(xué)等輕量級(jí)GPU計(jì)算場(chǎng)景,更細(xì)粒度的GPU計(jì)算服務(wù)。 輕量級(jí)GP...
閱讀 1250·2021-11-23 09:51
閱讀 687·2021-11-19 09:40
閱讀 1352·2021-10-11 10:58
閱讀 2361·2021-09-30 09:47
閱讀 3738·2021-09-22 15:55
閱讀 2174·2021-09-03 10:49
閱讀 1265·2021-09-03 10:33
閱讀 707·2019-08-29 17:12