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

使用OpenAPI弹性管理ECS实例

您除了可以通过 ECS 管理控制台 创建或管理 ECS 实例外,您也能通过 OpenAPI 管理或定制开发 ECS 实例。

阿里云提供了 SDK 来包装 OpenAPI,将云服务器 ECS 的管理集成到已有系统中。本文基于 Python 的开发来说明如何通过 OpenAPI 管理 ECS 实例。如果您没有 Python 开发经验,也能通过本文完成云服务的开发。

获取 RAM 子账号 AK 密钥

使用 OpenAPI 管理 ECS 实例,您需要能访问 ECS 资源的 API 密钥(Access Key ID 和 Access Key Secret)。为了保证云服务的安全,您需要创建一个能访问 ECS 资源的 RAM 子账号,获取该子账号的 AK 密钥,并使用这个 RAM 子账号和 OpenAPI 管理 ECS 实例。

以下是获取 RAM 子账号 AK 密钥的操作步骤:

  1. 创建 RAM 用户并获取 AK 密钥。
  2. 直接给 RAM 用户授权,授予 RAM 子账号 管理云服务器服务(ECS)的权限。

安装 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。

Hello Alibaba Cloud

创建文件 hello_ecs_api.py。 为了使用 SDK,首先实例化 AcsClient 对象,这里需要 RAM 子账号的 Accesskey 和 Accesskey Secret。

Access Key ID 和 Access Key Secret 是 RAM 子账号访问阿里云 ECS 服务 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 Secret', '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。

完整代码示例

以上操作完整的代码示例如下所示。

#  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 Secret', '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()

原文链接

时间: 2024-12-01 23:01:44

云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性管理ECS实例的相关文章

专访阿里云雁杨:因需求而进化,ECS云服务器追求弹性极致

近年来随着云计算如火如荼的发展,上云已经成为了所有企业的标配.但在国内鱼龙混杂的云服务市场下,云服务器的选型评估却是长期困扰着企业的难题.基于此,阿里云ECS一直坚持为不同行业及不同企业提供垂直实例产品,提高用户体验,有针对性的解决行业特色问题并且带来最优的性价比.本文中阿里云ECS产品负责人雁杨,将就云服务器的选择.业务迁移上云的经验分享等话题进行深度解答. 雁杨 ECS发展现状解读 和亚马逊一样,阿里云始于电商业务,其整体技术构筑在阿里集团10年的电商业务积淀之上.雁杨表示,作为国内最早对外

阿里云如何部署Linux云服务器实例环境

示例:部署环境 您可以根据业务需要,选择下列任意一种方式部署云服务器 ECS 实例的使用环境: 镜像部署 手动部署 下表列出了两种部署方式的特点.一般推荐镜像部署.如果您需要个性化定制部署,建议使用手动部署. 对比项 镜像部署 手动部署 部署所需时间 3-5分钟,快速部署上云 1-2天.选择适合的操作系统.中间件.数据库.各类软件.插件.脚本,再进行安装和配置 专业性 IOPS 由运维过万级用户的优质服务商提供 依赖开发人员的开发水平 个性化 支持主流应用场景 可满足个性化的部署要求 安全性 经

阿里云服务器是什么

什么是云服务器 ECS 云服务器 ECS (Elastic Compute Service) 是处理能力可弹性伸缩的计算服务,它的管理方式比物理服务器更简单高效.无需提前采购投入,您可以根据业务的需要,随时创建实例.扩容磁盘.或释放任意多台云服务器实例. 云服务器 ECS 实例(以下简称 ECS 实例)是一个虚拟的计算环境,包含 CPU.内存等最基础的计算组件,是云服务器呈献给每个用户的实际操作实体.ECS 实例是云服务器最为核心的概念,其他的资源,比如磁盘.IP.镜像.快照等,只有与 ECS

阿里云发布新物种神龙云服务器 媲美物理机性能的弹性云服务器

10月12日,在2017杭州·云栖大会上,阿里云发布了全新一代的计算类服务器产品--神龙云服务器(X-Dragon Cloud Server). 神龙云服务器是一种可水平弹性伸缩的高性能计算服务,融合了物理机与云服务器的各自优势,实现超强.超稳的计算能力. 通过采用自主研发的虚拟化2.0技术,神龙云服务器兼有普通云服务器的弹性和物理机的高计算性能及物理级别隔离的优势. 同时,秒级交付的特性将更好地满足大中型企业的高性能弹性计算的需求. 神龙云服务器具有四大突出亮点:极致性能.加密计算.秒级交付,

你所不知道的21个云服务器应用实践———云计算综合入门指南

摘要:如今,基于互联网的服务和交互已经越来越深入我们的生活,"云计算"也成为了不折不扣的高频词汇.并以其快捷.按需调用网络资源的优势为我们的日常生活带来了诸多便利和改变.之前,我们基于云服务器的多种利用方法制作了"云计算的1024种玩法"的零基础入门专题,现在,我们对这一专题进行扩展和整合,制作出了这份云计算综合入门指南.   它分为两个部分,分别是云计算基础和云计算实践.在基础篇中,我们能学习到关于云服务器远程控制搭建,数据管理使用,以及建站环境扩展等工具性内容:

个人或是公司如何选择适合自己的云服务器?

近年来,国内云计算的快速发展催动了一个新时代的产生.云计算正不断渗透到各行各业,不管是大型企业还是中小型企业都在争相拥抱云.与此同时,企业内部的IT基础架构正在发生变化,云服务器作为这个时代的产物早已引起人们的关注. 云服务器又叫云计算服务器或云主机.云服务器使用了云计算技术,整合了数据中心三大核心要素:计算.网络与存储.云服务器基于集群服务器技术,虚拟出多个类似独立服务器的部分,具有很高的安全稳定性. 因为云服务器是新时代产物,大多数中小企业对其了解并不深刻,在选择过程中存在很多问题,可能会导

云服务器和虚拟主机、vps主机的区别是什么?

共享主机也称虚拟主机,所谓"共享主机",就是一台服务器上有许多网站,大家共享这台服务器的硬件和带宽.如果它发生故障,那么上面的所有网站都无法访问.VPS主机(VirtualPrivate Server虚拟专用服务器),将一部服务器分割成多个虚拟专享服务器的优质服务.每个VPS都可分配独立公网IP地址.独立操作系统.独立超大空间.独立内存.独立CPU资源.独立执行程序和独立系统配置等.云服务器可以自由选择操作系统类型.这其实是因为云服务器能真正获得root权限,用户可以重装和升级操作系统

福建移动部署Oracle Exadata云服务器打造新一代经营分析系统

中国移动通信集团福建有限公司(简称福建移动)日前宣布,将通过部署Oracle Exadata数据库云服务器打造新一代经营分析系统(Business Analysis Support System,简称BASS系统),从而进一步支持其全方位发展的需求. 福建移动是中国移动(香港)有限公司的全资子公司,下辖9个市分公司,61个县(市)分公司.目前,福建移动已建成覆盖范围广.业务品种多.通信质量高的综合通信网络,成为经营移动通信业务.IP电话及互联网服务的专业化移动通信运营公司. 在过去十几年中,福建

福建移动部署甲骨文Exadata云服务器

2012年1月31日消息,中国移动通信集团福建有限公司(简称福建移动)日前宣布,将通过部署Oracle Exadata数据库云服务器打造新一代经营分析系统(Business Analysis Support System,简称BASS系统),从而进一步支持其全方位发展的需求. 福建移动是中国移动(香港)有限公司的全资子公司,下辖9个市分公司,61个县(市)分公司.目前,福建移动已建成覆盖范围广.业务品种多.通信质量高的综合通信网络,成为经营移动通信业务.IP电话及互联网服务的专业化移动通信运营公

Oracle云服务器助力西太平洋银行降低IT成本

[天极网服务器频道3月20日消息]甲骨文公司宣布,澳大利亚西太平洋银行已经选择采用Oracle Exadata数据库云服务器和Oracle Exalogic中间件云服务器,以支持正在部署的基于Oracle产品的主数据管理(MDM)应用,以打造客户单一视图.基于概念验证性能测试,该银行预计在未来5年内,可以大幅提升系统应用性能和可用性,并显著节省运维费用. 西太平洋银行旗下主数据管理应用基于Oracle Siebel统一客户主数据管理(UCM)解决方案,致力于巩固支持该多品牌集团内所有零售银行交易