ECS开放批量创建实例接口RunInstances

摘要: 为了更方便的实现弹性的资源创建,方便您一次运行多台ECS按量实例来完成应用的开发和部署,我们开放了ECS的批量创建实例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的优点: 批量提交一定的ECS实例数目,如果库存不足,则直接失败,避免您创建的实例数目不能满足需求而额外产生费用。

为了更方便的实现弹性的资源创建,方便您一次运行多台ECS按量实例来完成应用的开发和部署,我们开放了ECS的批量创建实例接口RunInstances。和目前的CreateInstance相比,RunInstances有下面的优点:

单次可以最多创建100台实例,避免重复调用。
批量提交一定的ECS实例数目,如果库存不足,则直接失败,避免您创建的实例数目不能满足需求而额外产生费用。
实例创建之后,会自动的开始Start,实例会变成Starting状态,直至Running,不需要您调用Start的操作。
创建实例的时候指定了InternetMaxBandwidthOut,则自动为您分配公网IP,不需要您再调用分配IP的操作。
您可以在创建的时候指定自动释放时间,自动释放,不需要您再额外设置自动释放时间。
您也可以一次创建100台的SpotInstance,充分满足您的弹性需求。
创建的参数保持和CreateInstance保持兼容,提供了Amount来设定创建的个数,提供了AutoReleaseTime来设定自动释放时间。
创建返回一个InstanceIdSets会记录相关的InstanceIds,您只需要根据实例ID轮询实例状态即可。
下文以Python为示例,其他的版本SDK都需要大于4.4.3即可。

安装ECS Python SDK
首先确保您已经具备Python的Runtime,本文中使用的Python版本为2.7+。

pip install aliyun-python-sdk-ecs

如果提示您没有权限,请切换sudo 继续执行。

sudo pip install aliyun-python-sdk-ecs

本文使用的sdk版本为4.4.3, 如果您使用是旧版本的sdk,需要你更新下。

批量创建实例
首先创建RunInstancesRequest的实例,然后填入相关需要的参数即可。

下面的例子创建了2台实例,并且添加了自动每隔10秒钟检查一次实例的运行状态。直到实例状态变成Running结束创建流程。

# 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 = 0while 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 = 0for instance_detail in instances_list:if instance_detail.get('Status') == "Running":running_count += 1return running_countdef 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_detailexcept Exception as e:logging.error(e)

批量创建实例并自动分配公网IP
相比上面的代码,我们只需要添加一行属性,指定公网的带宽即可。下面的例子中我们默认给实例都分配了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)

批量创建实例并自动设置自动释放时间
相比上面的代码,我们只需要添加一行属性,实例的自动释放时间即可。 自动释放时间按照 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 checkimport json
import logging
import timefrom aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesRequestlogging.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 = 0while 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 = 0for instance_detail in instances_list:if instance_detail.get('Status') == "Running":running_count += 1return running_countdef 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_detailexcept 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将简化您的资源创建和运行管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es查询时间long转date_在Elasticsearch查询中格式化日期(在检索过程中)

小编典典在Elasticsearch中运行查询时&#xff0c;您可以请求其返回原始数据&#xff0c;例如&#xff0c;指定字段&#xff1a;curl -XGET http://localhost:9200/myindex/date-test/_search?pretty -d {"fields" : "aDate","query":{"ma…

rem与px的转换

rem是相对于根元素&#xff0c;这样就意味着&#xff0c;我们只需要在根元素确定一个参考值&#xff0c;这个参考值设置为多少&#xff0c;完全可以根据您自己的需求来定。 我们知道&#xff0c;浏览器默认的字号16px&#xff0c;来看一些px单位与rem之间的转换关系&#xff1…

轻松应对双11,百万级物理和虚拟网络设备的网络智能化实践

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《双11的智能化网络实践》演讲整理&#xff0c;主要讲解了阿里巴巴在网络智能领域通过数据…

计算机专业能不能转音乐系,中国音乐学院可以转专业吗,中国音乐学院新生转专业政策...

一、中国音乐学院可以转专业吗学生在校学习期间&#xff0c;有下列情况之一的&#xff0c;可以转专业&#xff1a;(一)学生确有特长&#xff0c;转专业、转学更能发挥其特长的&#xff1b; 这种情况一般要求你大一第一学期绩点高&#xff0c;成绩好。学校会有转专业机会&#x…

好问题:为什么有些大公司技术弱爆了?

戳蓝字“CSDN云计算”关注我们哦&#xff01;本文整理自知乎上的同名讨论帖&#xff1a;《为什么有些大公司技术弱爆了&#xff1f;》&#xff0c;版权归原作者所有&#xff0c;原文地址&#xff1a;www.zhihu.com/question/32039226有网友提问&#xff1a;今年年初&#xff0c…

vue快速复制快捷键_⌨️ Vue项目给应用优雅的绑定快捷键

想必各位前端看官也一定做过这样的需求&#xff0c;给我们的应用某些主要的功能绑定一个快捷键。尤其是工具类的产品&#xff0c;让用户可以使用快捷键操作&#xff0c;能大大提高工具使用效率。如何绑定快捷键聪明的你也想到了&#xff0c;Vue 官方文档自有解释&#xff1a;按…

阿里智能运维平台如何助力研发应对双11挑战

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《阿里智能运维平台如何助力研发应对双11挑战》演讲整理&#xff0c;在回顾了阿里巴巴运维…

WebStorm-2019.2.3 下载安装

文章目录一、下载&#xff1a;WebStorm-2019.2.3二、安装三、激活3.1 编辑hosts文件&#xff0c;填写一些内容3.2 运行WebStorm&#xff0c;填写激活码3.3 激活日期为2020年一、下载&#xff1a;WebStorm-2019.2.3 官网下载 https://www.jetbrains.com/webstorm/ 点击“DOWNLO…

计算机机房建设目标是什么,计算机机房建设方案计划.doc

计算机机房建设方案计划PAGEPAGE 32********计算机机房建设项目PAGE 1计算机机房建设项目设计方案目 录TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc150746282" 第1章 项目背景 PAGEREF _Toc150746282 \h 3HYPERLINK \l "_Toc150746283" 1.1 项目介…

新一代数据库技术在双11中的黑科技

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《新一代数据库技术在双11中的应用》演讲整理&#xff0c;本文主要从数据库上云和弹性调度…

双11万亿流量下的分布式缓存

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《双11万亿流量下的分布式缓存》演讲整理&#xff0c;本文主要从Tair发展和应用开始谈起&a…

任正非:华为鸿蒙将比安卓快 60%;小米已官方回应侵权偷图事件;博通正考虑收购软件公司,其中Tibco和赛门铁克为重点目标……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 故宫宫廷和名创优品联名推出…

曲曲直直线条图计算机教案,【曲曲直直的美术画】_美术教案第三课:曲曲直直(三年级美术下册教案)——小学美术...

美术教案第三课:曲曲直直(三年级美术下册教案)教学目标:认知目标:能够认识生活中的各种曲线和直线,说说曲线、直线给自己的感受.能力目标:能够用绘画、剪贴等方法表现曲线和直线的画面,培养学生自主探究的能力和创造能力.情感目标:通过收集不同直线、曲线材料进行创作,培养学生…

2017双11交易系统TMF2.0技术揭秘,实现全链路管理

摘要&#xff1a; 本文是《2017双11交易系统TMF2.0技术揭秘》演讲整理&#xff0c;主要讲解了基于TMF2.0框架改造的交易平台&#xff0c;通过业务管理域与运行域分离、业务与业务的隔离架构&#xff0c;大幅度提高了业务在可扩展性、研发效率以及可维护性问题&#xff0c;同时以…

争分夺秒:阿里实时大数据技术全力助战双11

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《争分夺秒&#xff1a;阿里实时大数据技术助战双 11》演讲整理&#xff0c;主要讲解了阿里…

台式电脑一般价钱多少_看完才明白,电脑一体机和台式机哪个好?

一体机和台式机电脑哪个好&#xff1f;电脑一体机是目前台式机和笔记本电脑之间的一个新型的市场产物&#xff0c;它将主机部分、显示器部分整合到一起的新形态电脑&#xff0c;该产品的创新在于内部元件的高度集成。台式机分为主机和机箱&#xff0c;是分体存在的&#xff0c;…

计算机房地板厚度,机房防静电地板 架空地板的技术参数与地板规格种类

导语&#xff1a;防静电地板又叫做导静电地板或者抗静电地板(分导电性型和静电耗散型)&#xff0c;是一种机房常用的地板装饰材料&#xff0c;在一二线城市的机房装修中普遍使用&#xff0c;但在欠发达城市很多人对这种地板了解不多&#xff0c;所以下面就来为大家简单介绍下防…

Hive精华问答 | Hive的数据模型是怎样的?

Hive是一个数据仓库基础工具&#xff0c;它是建立在Hadoop之上的数据仓库&#xff0c;在某种程度上可以把它看做用户编程接口&#xff08;API&#xff09;&#xff0c;本身也并不存储和处理数据&#xff0c;依赖于HDFS存储数据&#xff0c;依赖MR处理数据。它提供了一系列对数据…

网络虚拟化技术为双11提供灵动网络

摘要&#xff1a; 12月13-14日&#xff0c;由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束&#xff0c;集中为大家分享了2017双11背后的黑科技。本文是《网络虚拟化技术为双11提供灵动网络》演讲整理&#xff0c;主要讲解了混合云技术的应用与…