使用OpenApi弹性管理云服务器ECS
阿里云的云服务器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相关推荐
- 几分钟了解云服务器ECS
简介: 云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器ECS就像使用水.电.煤气等资源一样便捷.高效.您无需提前采购硬件设备,而是根据业 ...
- 云服务器ECS(一)
一.云服务器ECS的概念 云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器ECS就像使用水.电.煤气等资源一样便捷.高效.您无需提前采购硬 ...
- 云服务器ecs维护工作,云服务器ecs维护工作
云服务器ecs维护工作 内容精选 换一换 介绍常见的安全组配置示例.如下示例中,出方向默认全通,仅介绍入方向规则配置方法.不同安全组内的弹性云服务器内网互通仅允许特定IP地址远程连接弹性云服务器SSH ...
- 云服务器ECS入门及云上网站部署
云服务器ECS入门及云上网站部署 一.什么是云服务器ECS 云服务器ECS (Elastic Compute Service) 是阿里云提供的性能卓越.稳定可靠.弹性扩展的laaS(Infrastru ...
- Apsara Clouder云计算专项技能认证:云服务器ECS入门
文章目录 一.什么是云服务器ECS 二.如何获取一台云服务器ECS 三.5分钟学会管理云服务器ECS 四.[实验]ECS云服务器新手上路 五.[实验]基于ECS搭建云上博客 入口: https://e ...
- 阿里云服务器ECS使用管理多种方式汇总
阿里云服务器ECS创建后如何使用?阿里云提供多种方法操作云服务器ECS,可以通过Web端ECS管理控制台操作.阿里云客户端.阿里云APP.ECS API.资源编排.运维编排服务.Terraform及A ...
- 阿里云服务器ECS接入多IP_ECS绑定多个弹性公网IP搭建教程
很多场景下我们需要单服务器多IP来完成业务需求,运营商们大多采取单独出售ip来满足客户需求,当然相对靠谱的运营商是我们的首选,下面介绍一下阿里云ECS部署多IP是如何实现的. 1.选择云服务器ECS ...
- 云服务的计算服务中的弹性云服务器(ECS)、裸金属服务器(BMS)以及镜像服务(IMS)的概念和深入理解【CloudService】
文章目录 一.计算服务总览 二.弹性云服务器(ECS) 2.1 ECS的优势 2.2 ECS的架构 2.3 应用场景 -网站应用 2.4应用场景-图形渲染 2.5 应用场景-高性能计算 2.6 ECS ...
- 跟我一起来学弹性云服务器ECS【华为云至简致远】
[摘要] 弹性云服务器(Elastic Cloud Server,ECS)是由CPU.内存.操作系统.云硬盘组成的基础的计算组件.弹性云服务器的开通是自助完成的,您只需要指定CPU.内存.操作系统.规 ...
最新文章
- Spring源码分析【7】-Spring 模板页和JSP文件的编译
- 程序员自购老板椅被HR搬去老板办公室:不能享受这么好的椅子
- matlab求xk符号解,matlab符号运算习题
- Mysql (一)Mysql 数据库增删改查
- C++继承体系下的对象构造
- AD 修改密码返回错误 Set-ADAccountPassword : 从服务器返回了一个参照。
- 设计模式之十(外观模式)
- 对MariaDB10.0的Sphinx进行扩展
- 软件测试课程学习总结
- 数据源管理 | 基于DataX组件,同步数据和源码分析
- C++中若类中没有默认构造函数,如何使用对象数组
- python编程入门----numpy不常见的小细节
- DeepMind作弊?被质疑干翻星际2顶尖高手全靠手速
- php异步上传,php中通过Ajax如何实现异步文件上传的代码实例
- 2019-04-02
- wpf程序启动时停止工作,事件管理器报错kernelbase.dll
- Android系统启动-SystemServer下篇
- RK3288_Android7.1接eDP屏休眠之后led状态灯没有亮红色
- CDQZ_Training 2012-5-10 舞蹈课
- 蓝桥杯 算法提高 盾神与积木游戏
热门文章
- Linux之压缩与解压缩
- LeetCode Reverse Linked List II 反置链表2
- nginx php win平台配置
- spring+hibernate的配置
- TP5 使用IN查询时如何限制条数
- hdu5248序列变换(二分+贪心)基础题
- 【Groovy】集合遍历 ( 使用集合的 findAll 方法查找集合中符合匹配条件的所有元素 | 代码示例 )
- 【Android 插件化】插件化框架整理
- 【Android 插件化】现有的针对插件化恶意应用的解决方案 | 插件化应用开发推荐方案
- 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )