成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ECS開放批量創(chuàng)建實(shí)例接口RunInstances

supernavy / 1655人閱讀

摘要:摘要為了更方便的實(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

相關(guān)文章

  • 阿里云ECS開放批量創(chuàng)建實(shí)例接口,實(shí)現(xiàn)彈性資源的創(chuàng)建

    摘要:摘要為了更方便的實(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)...

    gplane 評(píng)論0 收藏0
  • 阿里云建站產(chǎn)品:虛擬主機(jī),輕量應(yīng)用服務(wù)器,ECS云服務(wù)器,模板建站區(qū)別

    摘要:我們選擇阿里云產(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ì)以及各自適合...

    Rindia 評(píng)論0 收藏0
  • 中型電商解決方案

    摘要:阿里云服務(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ò)容...

    yimo 評(píng)論0 收藏0
  • 阿里云異構(gòu)計(jì)算發(fā)布:輕量級(jí)GPU云服務(wù)器實(shí)例VGN5i

    摘要:輕量級(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...

    hufeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<