使用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 DescribeRegionsRequest

clt = 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 None
    assert region_list is not None
    result = map(_print_region_id, region_list)
    logging.info("region list: %s", result)

def _print_region_id(item):
    region_id = item.get("RegionId")
    return region_id

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)

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 check

import json
import logging

from 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 None
        assert region_list is not None
        result = 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_id

def _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_detail
    except Exception as e:
        logging.error(e)

if __name__ == '__main__':
    logging.info("Hello Aliyun OpenApi!")
    hello_aliyun_regions()
    list_instances()

时间: 2025-01-14 17:03:16

使用OpenApi弹性管理云服务器ECS的相关文章

使用OpenApi弹性创建云服务器ECS

除了可以在ECS控制台或者售卖页创建ECS之外,您可以使用OpenApi代码来弹性的创建和管理ECS.这里使用Python来作例子. 开通按量付费产品,您的账户余额不得少于100元,更多的需求参见ECS 使用须知,您需要在阿里云的费用中心确保自己的余额充足. 创建ECS的有下面几个API需要关注: 创建ECS实例 查询实例列表 启动ECS实例 分配公网 IP 地址 按量的云服务器创建 创建一台云服务器有很多关键参数,下面几个是必选属性: SecurityGroupId: 安全组Id,安全组通过安

云服务器ECS安全组实践(二)

云服务器ECS安全组实践(一)中我们简单介绍了安全组的一些规则和约束和实践,在创建一台云服务的时候,它作为几个必选参数之一,可见它的重要性.本文将继续安全组的介绍,本篇涉及到下面的几个内容: 授权和撤销安全组规则 加入安全组和离开安全组 阿里云的网络类型分为经典网络和VPC,他们对安全组支持不同的设置规则.对于经典网络你可以设置下面的几个规则: 内网入方向.内网出方向.公网入方向.公网出方向.对于VPC网络可以设置: 内网入方向.内网出方向. 在开始本篇之前描述几个安全组内网通讯的概念: 默认情

云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性管理ECS实例

使用OpenAPI弹性管理ECS实例 您除了可以通过 ECS 管理控制台 创建或管理 ECS 实例外,您也能通过 OpenAPI 管理或定制开发 ECS 实例. 阿里云提供了 SDK 来包装 OpenAPI,将云服务器 ECS 的管理集成到已有系统中.本文基于 Python 的开发来说明如何通过 OpenAPI 管理 ECS 实例.如果您没有 Python 开发经验,也能通过本文完成云服务的开发. 获取 RAM 子账号 AK 密钥 使用 OpenAPI 管理 ECS 实例,您需要能访问 ECS

云服务器ECS是什么鬼?看完这篇就懂了

近十年来,云计算概念大肆崛起,而作为一个新兴概念很多专业概念还不为人熟知,比如云服务器ecs就是其中一个.云服务器ecs作为一个专有名词频繁出现在搜索榜单中.那么今天笔者就与大家聊一聊这看似高深莫测的云服务器ecs究竟是什么鬼? 为了更好地了解云服务器ecs,我们可以想一下平时这个专业名词的应用场景.仔细回想,你会发现,似乎和云服务器没什么太大的差别.的确如此. 云服务器ecs的概念与作用 云服务器(Elastic Compute Service,简称 ECS)是一种简单高效.处理能力可弹性伸缩

云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性释放ECS实例

使用OpenAPI弹性释放ECS实例 云服务器 ECS 的一个重要特性就是按需创建资源.您可以在业务高峰期按需弹性地进行自定义资源创建,完成业务计算时释放资源.本篇将提供若干 Tips 帮助您更加便捷地完成云服务器的释放以及弹性设置. 本文将涉及到几个重要功能和相关API: 释放按量付费的云服务器 设置按量付费实例的自动释放时间 停止服务器 查询实例列表 释放后,实例所使用的物理资源将被回收,包括磁盘及快照,相关数据将全部丢失且永久不可恢复.如果您还想继续使用相关的数据,建议您释放云服务器之前一

使用OpenApi弹性释放和设置云服务器ECS释放

云服务器ECS的一个重要特性就是按需创建资源.您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源.本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置. 本文将涉及到几个重要的功能和相关API: 释放按量付费的云服务器 设置按量付费实例的自动释放时间 停止服务器 查询实例列表 释放后实例所使用的物理资源都被回收,包括磁盘及快照,相关数据全部丢失且永久不可恢复.如果您还想继续使用相关的手,建议您释放云服务器之前一定要对磁盘数据做快照,这样您可以下

使用TAG标签对云服务器ECS的分组和管理

本篇是使用OpenApi管理云服务器的管理篇第5篇.在这一篇中,主要是利用TAG进行资源分组,只有清晰的分组才可以方便的进行未来的运维和管理. 本篇主要涉及到下面的几个关键API: 绑定标签 查询标签 解绑标签 TAG资源分组 很多的用户在使用云服务器的时候都通过云服务器的名称和描述信息来进行资源分组,这里的弊端是一个云资源只支持一个名称和描述.批量管理云服务器的时候一个重要的任务就是资源分组.为了方便的资源管理,云服务器有一个重要的概念就是TAG.TAG有下面几个约定: TAG和传统的TAG不

云服务器 ECS弹性变配能力总览

云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新.它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理. 下面我们将着重介绍下目前云服务器的弹性能力,也许有您所不知道但是非常期望的功能已经悄悄上线了. 云服务ECS目前的付费方式主要分为两类,预付费和后付费.云服务器的目前主要包含下面三个组件: 实

云服务器 ECS 建站教程:搭建Joomla基础管理平台

搭建Joomla基础管理平台 Joomla是一套知名的内容管理系统.Joomla是使用PHP语言加上Mysql数据开发的软件系统,Joomla的最新版本是3.x,这一版本实现了许多技术上的优化调整,是目前的稳定版本. 本文主要说明如何在阿里云ECS上搭建Joomla基础管理平台.使用的操作系统为Linux CentOS 6.5 64位. 适用对象 适用于熟悉 ECS,熟悉 Linux 系统, ECS 实例搭建刚开始使用阿里云进行建站的用户. 基本流程 使用云服务器 ECS 搭建 Joomla 平