阿里云的云服务器ECS除了提供控制台来进行日常的管理和资源创建,还提供了OpenApi来进行资源的管理和定制开发。通过OpenApi您可以更加灵活的管理和配置云服务器。

阿里云提供了SDK来包装OpenApi,可以让您将云服务器的管理集成到您的已有系统中。本文以Python的开发来说明OpenApi如何来管理云服务器,即便您没有Python的开发经验,通过本文也可以轻松的0基础入门进行云服务的开发。其它语言的开发和管理您可以通过留言沟通。

安装ECS Python SDK

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

pip install aliyun-python-sdk-ecs

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

sudo pip install aliyun-python-sdk-ecs

本文使用的sdk版本为2.1.2, 如果您使用是旧版本的sdk,建议你更新下。

Hello Aliyun ECS

我们首先创建一个文件hello_ecs_api.py. 为了使用SDK,首先实例化 AcsClient对象,这里需要输入的是您的阿里云在Accesskey和Accesskey Secrect,你可以通过https://ak-console.aliyun.com/ 获取自己的AK。

Access Key ID和Access Key Secret是您访问阿里云API的密钥,具有该账户完全的权限,请您妥善保管。

from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequestclt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')

完成了实例化之后就可以进行您的第一个应用的开发。做一个简单的查询查询下当前您的账号支持的地域列表。具体的文档参见查询可用地域列表.


def hello_aliyun_regions():request = DescribeRegionsRequest()response = _send_request(request)region_list = response.get('Regions').get('Region')assert response is not Noneassert region_list is not Noneresult = map(_print_region_id, region_list)logging.info("region list: %s", result)def _print_region_id(item):region_id = item.get("RegionId")return region_iddef _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)hello_aliyun_regions()    

在命令行运行python hello_ecs_api.py会得到当前的支持的Region列表。类似的输出如下

[u'cn-shenzhen', u'ap-southeast-1', u'cn-qingdao', u'cn-beijing', u'cn-shanghai', u'us-east-1', u'cn-hongkong', u'me-east-1', u'ap-southeast-2', u'cn-hangzhou', u'eu-central-1', u'ap-northeast-1', u'us-west-1']

查询当前的Region下的ECS实例列表

查询实例列表和查询Region列表非常类似,替换入参对象为DescribeInstancesRequest即可,更多的查询参数参考查询实例列表

def list_instances():request = DescribeInstancesRequest()response = _send_request(request)if response is not None:instance_list = response.get('Instances').get('Instance')result = map(_print_instance_id, instance_list)logging.info("current region include instance %s", result)def _print_instance_id(item):instance_id = item.get('InstanceId');return instance_id

输出结果为如下

current region include instance [u'i-****', u'i-****'']

更多的API参考ECS API 概览,尝试做一个查询磁盘列表。将实例的参数替换为DescribeDisksRequest

下一步

完成了上面的任务之后我们下一步将包含新的任务。下面的内容将持续更新,敬请关注:

  • API资源创建
  • 资源管理-TAG分组
  • API续费和设置自动续费
  • API资源释放和设置自动释放时间

全部的代码如下

#  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 2.1.2, you can use command 'pip show aliyun-python-sdk-ecs' to checkimport json
import loggingfrom aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest# configuration the log output formatter, if you want to save the output to file,
# append ",filename='ecs_invoke.log'" after datefmt.
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')clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')# sample api to list aliyun open api.
def hello_aliyun_regions():request = DescribeRegionsRequest()response = _send_request(request)if response is not None:region_list = response.get('Regions').get('Region')assert response is not Noneassert region_list is not Noneresult = map(_print_region_id, region_list)logging.info("region list: %s", result)# output the instance owned in current region.
def list_instances():request = DescribeInstancesRequest()response = _send_request(request)if response is not None:instance_list = response.get('Instances').get('Instance')result = map(_print_instance_id, instance_list)logging.info("current region include instance %s", result)def _print_instance_id(item):instance_id = item.get('InstanceId');return instance_iddef _print_region_id(item):region_id = item.get("RegionId")return region_id# 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__':logging.info("Hello Aliyun OpenApi!")hello_aliyun_regions()list_instances()

使用OpenApi弹性管理云服务器ECS相关推荐

  1. 几分钟了解云服务器ECS

    简介: 云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器ECS就像使用水.电.煤气等资源一样便捷.高效.您无需提前采购硬件设备,而是根据业 ...

  2. 云服务器ECS(一)

    一.云服务器ECS的概念 云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器ECS就像使用水.电.煤气等资源一样便捷.高效.您无需提前采购硬 ...

  3. 云服务器ecs维护工作,云服务器ecs维护工作

    云服务器ecs维护工作 内容精选 换一换 介绍常见的安全组配置示例.如下示例中,出方向默认全通,仅介绍入方向规则配置方法.不同安全组内的弹性云服务器内网互通仅允许特定IP地址远程连接弹性云服务器SSH ...

  4. 云服务器ECS入门及云上网站部署

    云服务器ECS入门及云上网站部署 一.什么是云服务器ECS 云服务器ECS (Elastic Compute Service) 是阿里云提供的性能卓越.稳定可靠.弹性扩展的laaS(Infrastru ...

  5. Apsara Clouder云计算专项技能认证:云服务器ECS入门

    文章目录 一.什么是云服务器ECS 二.如何获取一台云服务器ECS 三.5分钟学会管理云服务器ECS 四.[实验]ECS云服务器新手上路 五.[实验]基于ECS搭建云上博客 入口: https://e ...

  6. 阿里云服务器ECS使用管理多种方式汇总

    阿里云服务器ECS创建后如何使用?阿里云提供多种方法操作云服务器ECS,可以通过Web端ECS管理控制台操作.阿里云客户端.阿里云APP.ECS API.资源编排.运维编排服务.Terraform及A ...

  7. 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建教程

    很多场景下我们需要单服务器多IP来完成业务需求,运营商们大多采取单独出售ip来满足客户需求,当然相对靠谱的运营商是我们的首选,下面介绍一下阿里云ECS部署多IP是如何实现的. 1.选择云服务器ECS ...

  8. 云服务的计算服务中的弹性云服务器(ECS)、裸金属服务器(BMS)以及镜像服务(IMS)的概念和深入理解【CloudService】

    文章目录 一.计算服务总览 二.弹性云服务器(ECS) 2.1 ECS的优势 2.2 ECS的架构 2.3 应用场景 -网站应用 2.4应用场景-图形渲染 2.5 应用场景-高性能计算 2.6 ECS ...

  9. 跟我一起来学弹性云服务器ECS【华为云至简致远】

    [摘要] 弹性云服务器(Elastic Cloud Server,ECS)是由CPU.内存.操作系统.云硬盘组成的基础的计算组件.弹性云服务器的开通是自助完成的,您只需要指定CPU.内存.操作系统.规 ...

最新文章

  1. Spring源码分析【7】-Spring 模板页和JSP文件的编译
  2. 程序员自购老板椅被HR搬去老板办公室:不能享受这么好的椅子
  3. matlab求xk符号解,matlab符号运算习题
  4. Mysql (一)Mysql 数据库增删改查
  5. C++继承体系下的对象构造
  6. AD 修改密码返回错误 Set-ADAccountPassword : 从服务器返回了一个参照。
  7. 设计模式之十(外观模式)
  8. 对MariaDB10.0的Sphinx进行扩展
  9. 软件测试课程学习总结
  10. 数据源管理 | 基于DataX组件,同步数据和源码分析
  11. C++中若类中没有默认构造函数,如何使用对象数组
  12. python编程入门----numpy不常见的小细节
  13. DeepMind作弊?被质疑干翻星际2顶尖高手全靠手速
  14. php异步上传,php中通过Ajax如何实现异步文件上传的代码实例
  15. 2019-04-02
  16. wpf程序启动时停止工作,事件管理器报错kernelbase.dll
  17. Android系统启动-SystemServer下篇
  18. RK3288_Android7.1接eDP屏休眠之后led状态灯没有亮红色
  19. CDQZ_Training 2012-5-10 舞蹈课
  20. 蓝桥杯 算法提高 盾神与积木游戏

热门文章

  1. Linux之压缩与解压缩
  2. LeetCode Reverse Linked List II 反置链表2
  3. nginx php win平台配置
  4. spring+hibernate的配置
  5. TP5 使用IN查询时如何限制条数
  6. hdu5248序列变换(二分+贪心)基础题
  7. 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
  8. 【Android 插件化】插件化框架整理
  9. 【Android 插件化】现有的针对插件化恶意应用的解决方案 | 插件化应用开发推荐方案
  10. 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )