OpenAPI代码如何弹性地创建和管理ECS

  介绍

OpenAPI代码如何弹性地创建和管理ECS ?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

弹性创建ECS实例

<强>创建ECS时需关注以下API:

创建ECS实例

查询实例列表

启动ECS实例

分配公网IP地址

开通按量付费产品,您的账户余额不得少于100元,更多的需求参见ECS使用须知。您需要在阿里云的费用中心确保自己的余额充足。

创建云服务器时的必选属性:

SecurityGroupId:安全组ID。安全组通过防火墙规则实现对一组实例的配置,保护实例的网络出入请求。在设置安全组出入规则时,建议按需开放而不要默认开放所有的出入规则。您也可以通过ECS控制台创建安全组。

InstanceType:实例规格。参考ECS售卖页的选项,界面上1核2 gb n1。小则入参为ecs.n1。小。

ImageId:镜像ID。参考ECS控制台的镜像列表,您可以过滤系统公共镜像或者自定义镜像。

更多参数设置请参考创建ECS实例。

如下面的代码所示,创建一台经典网络的ECS,使用系统盘ssd,盘参数为cloud_ssd,选择io优化实例优化。

#创建> {“InstanceId":“我- * * *”、“RequestId":“006 c1303-bac5-48e5-bcdf-7fd5c2e6395d"}

对于云服务器的状态操作,请参考云服务器实例生命周期。

只有停止状态的实例可以执行开始操作。也只有运行状态的ECS可以执行停止操作。查询云服务器的状态可以通过查询实例列表传入InstanceId进行过滤。在DescribeInstancesRequest时可以通过传入一个JSON数组格式的字符串就可以查询这个资源的状态。查询单个实例的状态建议使用DescribeInstances而不要使用DescribeInstanceAttribute,因为前者比后者返回更多的属性和内容。

下面的代码会检查实例的状态,只有实例的状态符合入参才会返回实例的详情。

#输出实例拥有当前的地区。   def get_instance_detail_by_id(即instance_id状态=& # 39;停止# 39;):   logging.info(“检查实例% s地位% s",即instance_id,状态)   请求=DescribeInstancesRequest ()   request.set_InstanceIds (json.dumps((即instance_id)))   响应=_send_request(请求)   instance_detail=没有   如果响应没有没有:   instance_list=response.get(& # 39;实例# 39;). get(& # 39;实例# 39;)   在instance_list:项   如果item.get(& # 39;状态# 39;)==状态:   instance_detail=项目   打破;   返回instance_detail;

创建成功后的ECS默认状态是停止。如果要启动ECS实例为运行状态,只需要发送启动指令即可。

def start_instance(即instance_id):   请求=StartInstanceRequest ()   request.set_InstanceId(即instance_id)   _send_request(请求)

停止云服务器只需传入instanceId即可。

def stop_instance(即instance_id):   请求=StopInstanceRequest ()   request.set_InstanceId(即instance_id)   _send_request(请求)

创建时启动”自动启动云服务器”

服务器的启动和停止都是一个异步操作,您可以在脚本创建并同时检测云服务器符合状态时执行相应操作。

创建资源后得到实例ID,首先判断实例是否处于停止的状态,如果处于停止状态,下发开始服务器的指令,然后等待服务器的状态变成运行。

def check_instance_running(即instance_id):   细节=get_instance_detail_by_id(即instance_id=即instance_id状态=INSTANCE_RUNNING)   指数=0   而细节是没有和索引,lt;60:   细节=get_instance_detail_by_id(即instance_id=即instance_id);   time . sleep (10)   如果细节和detail.get(& # 39;状态# 39;)==& # 39;停止# 39;:   logging.info (“% s实例停止现在!”)   start_instance(即instance_id=即instance_id)   % s logging.info(“启动实例的工作提交!”)   细节=get_instance_detail_by_id(即instance_id=即instance_id状态=INSTANCE_RUNNING)   而细节是没有和索引,lt;60:   细节=get_instance_detail_by_id(即instance_id=即instance_id状态=INSTANCE_RUNNING);   time . sleep (10)   logging.info (“% s实例正在运行现在!”,即instance_id)   返回即instance_id;

如果在创建云服务器的过程中,指定了公网带宽,若需要公网的访问权限还要调用API来分配公网IP。详情请参考:分配公网IP地址。

除了创建按量服务的云服务器,您的API还支持创建包年包月的服务器。包年包月的创建和官网的创建流程不同,使用的是自动扣费的模式,也就是说您需要在创建服务器之前确保账号有足够的余额或者信用额度,在创建的时候将直接扣费。

OpenAPI代码如何弹性地创建和管理ECS