阿里云资源编排服务Python SDK使用入门

本文涉及的产品
资源编排,不限时长
简介: 阿里云资源编排服务(ROS)为我们维护云计算资源提供了一个低成本、可靠、标准化的方案。基于ROS提供的能力,我们只要编写和维护资源模板文件,就可以达到维护云计算资源的目的。 ROS同时提供RESTful API和SDK,这使得我们可以很容易的把ROS对于资源的操作能力集成到我们的应用中。

阿里云资源编排服务(ROS)为我们维护云计算资源提供了一个低成本、可靠、标准化的方案。基于ROS提供的能力,我们只要编写和维护资源模板文件,就可以达到维护云计算资源的目的,而不再需要花费很多的时间通过控制台来人肉配置。ROS为一些场景下的资源维护提供了不同的思路和可能性,比如很多需要大量临时计算资源的场景,使用ROS将使整个资源申请、应用构建、资源释放过程非常简单。

ROS同时提供RESTful API和SDK,这使得我们可以很容易的把ROS对于资源的操作能力集成到我们的应用中。下面我们通过示例介绍一下,如何使用ROS的Python SDK来使用ROS的资源编排功能。

: 示例中的命令行都使用Linux的shell,Windows/DOS用户需要根据情况修改。

1. 安装Python SDK

ROS Python SDK依赖Python 2.7以上版本。首先,使用pip安装aliyun-python-sdk-core:

pip install aliyun-python-sdk-core

aliyun-python-sdk-core是所有阿里云官方Python SDK的公共组件。如果安装过程提示权限错误,可能是因为当前用户没有Python安装路径的写权限,上面的命令可以改成下面这样,后面的例子类似:

sudo pip install aliyun-python-sdk-core

接下来,安装ROS SDK:

pip install aliyun-python-sdk-ros

2. 初始化SDK

我们首先创建一个文件来存放我们的示例代码:

touch ros_sdk_sample.py

import必要的库:

from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20150901 import DescribeRegionsRequest, CreateStacksRequest

import json

初始化SDK客户端对象:

client = AcsClient('你的AccessKeyId', '你的AccessKeySecret', 'cn-beijing')
  • 其中AccessKeyId和AccessKeySecure是用户访问阿里云Open API时的认证信息,可以登陆阿里云官方站后获得: https://ak-console.aliyun.com/
  • 第三个参数是用户访问的资源所在的默认Region,此处为了演示,选择cn-beijing

3. 基本请求过程

我们通过一个简单的列出Region列表的请求来说明ROS请求的基本过程:

3.1 构造请求对象

构造一个表示列出Region列表的请求对象:

req = DescribeRegionsRequest.DescribeRegionsRequest()
3.2 发起请求
status, headers, body = client.get_response(req)
  • status表示请求的返回状态,与HTTP状态码对应,一般2xx表示成功,4xx和5xx表示出错。
  • header表示请求的返回头信息,与HTTP头对应
  • body表示请求的返回内容,与HTTP请求返回的body对应
3.3 处理请求结果

ROS API返回的内容为JSON格式,所以我们把内容通过JSON反序列化后直接打印到屏幕:

if status == 200:
    regions = json.loads(body)
    print(regions)
else:
    print('Unexpected errors: status=%d, error=%s' % (status, body))

当请求成功执行时,会在屏幕上打印支持ROS的Region列表,当请求出错时,屏幕上会打印出错的状态代码和出错信息。

4. 创建资源栈

接下来,我们用一个更有用的例子来说明如何通过ROS的SDK创建一个包含ECS实例的资源栈。

4.1 模板

我们使用下面的模板来创建资源栈:

template = '''

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Resources": {
        "My_ECS_Instance": {
            "Type": "ALIYUN::ECS::Instance",
            "Description": "Create a ECS instance for demo.",
            "Properties": {
                "ImageId": "m-25qoptbjn",
                "InstanceType": "ecs.s2.large",
                "InternetChargeType": "PayByTraffic",
                "IoOptimized": "none",
                "SystemDisk_Category": "cloud",
                "SecurityGroupId": {
                    "Fn::GetAtt": [
                        "mySecurityGroup",
                        "SecurityGroupId"
                    ]
                }
            }
        },

        "mySecurityGroup": {
            "Type": "ALIYUN::ECS::SecurityGroup",
            "Properties": {
                "SecurityGroupName": "mySecurityGroup"
            }
        }
    }
}

'''

模板中定义了一个ECS实例和一个安全组,ECS实例使用自定义镜像m-25qoptbjn初始化。

4.2 构造请求

创建请求对象

req = CreateStacksRequest.CreateStacksRequest()

通过HTTP头设置资源栈所在的Region:

req.set_headers({'x-acs-region-id': 'cn-beijing'})

构造请求的消息体内容:

create_stack_body = '''
{
    "Name": "%s",
    "TimeoutMins": %d,
    "Template": %s
}
''' % ('my_demo_stack', 60, template)
  • Name是我们将要创建的资源栈的命名,每个用户空间下的资源栈名称不能重复
  • TimeoutMins是指创建过程如果在指定的时间后不能完成则超时失败,单位分钟
  • Template表示创建的资源栈使用的模板内容
req.set_content(create_stack_body);
4.3 提交请求
status, headers, body = client.get_response(req)
if status == 201:
    result = json.loads(body)
    print(result)
else:
    print('Unexpected errors: status=%d, error=%s' % (status, body))
  • 创建资源栈的请求根据RESTful的习惯使用HTTP POST方式提交,当成功时返回状态为201

5. 资源栈

当创建资源栈的请求成功时,返回的body中包含被创建资源栈的的ID, Name,如下:

{u'Id': u'61167738-e128-4840-9a37-e568f70aa894', u'Name': u'my_demo_stack'}

创建资源栈的请求会同步返回,但资源栈内的资源创建是由资源编排服务在后台异步执行的。所以到创建请求返回,并不表示所有资源已经创建完成。我们可以通过ROS的web控制台或者API来查询堆栈的创建状态、创建过程中的事件等等。

5.1 使用控制台管理资源栈

登陆ROS控制台(https://ros.console.aliyun.com) 我们可以看到刚刚通过python代码提交创建的资源栈:

资源栈列表

资源栈的状态为创建中,表示我们的ECS实例还没有创建完成。我们可以查看事件列表来监控资源栈创建过程:

ROS事件列表

如图所示,ROS首先创建了ECS依赖的安全组,然后创建了ECS实例,ROS会妥善的安排资源间的依赖关系。

最后,资源栈创建完成,我们可以在资源列表中看到所有资源:

lALOCIdLOcyNzQNy_882_141

5.2 使用SDK管理资源栈

通过前面对SDK使用的介绍,我们已经熟悉向发送ROS请求和处理返回的细节。同时,ROS的Open API和SDK提供完整的资源栈生命周期管理功能,用户可以通过API和SDK使用ROS提供的所有功能,这些功能包括:

Action 说明
AbandonStackRequest 废弃资源栈
CreateStacksRequest 创建资源栈
DeleteStackRequest 删除资源栈
DescribeEventsRequest 查询事件列表
DescribeRegionsRequest 查询Region列表
DescribeResourceDetailRequest 查询资源详情
DescribeResourceTypeDetailRequest 查询资源类型详情
DescribeResourceTypeTemplateRequest 查询资源模板示例
DescribeResourceTypesRequest 查询资源类型列表
DescribeResourcesRequest 查询资源列表
DescribeStackDetailRequest 查询资源栈详情
DescribeStacksRequest 查询资源栈列表
DescribeTemplateRequest 查询模板
ValidateTemplateRequest 验证模板合法性

ROS的功能还在不断增加中,更详细的说明请关注ROS文档: https://help.aliyun.com/product/9091083_ros.html

本文示例代码可在附件中下载。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
5天前
|
Python
Python 编程入门:打造你的第一个程序
【9月更文挑战第27天】编程,就像是在数字世界里绘画。想象一下,你手中的键盘是画笔,屏幕是画布,而代码则是你的颜料。这篇文章将带你走进编程的世界,学习如何使用 Python 这门语言来创建你的第一个程序。我们将从基础的语法开始,逐步深入到条件判断和循环结构,最终完成一个简单的猜数字游戏。无论你是否有编程经验,这里的内容都将为你打开一扇新的大门。
|
5天前
|
人工智能 数据挖掘 开发者
Python编程入门:从零到英雄
【9月更文挑战第27天】本文旨在通过浅显易懂的语言,为初学者介绍Python编程的基础知识和实用技巧。我们将一起探索Python的世界,了解其语法、数据结构,并通过实际示例学习如何编写简单的Python程序。无论你是编程新手,还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往Python编程世界的大门。
|
4天前
|
Python
? Python 装饰器入门:让代码更灵活和可维护
? Python 装饰器入门:让代码更灵活和可维护
11 4
|
6天前
|
存储 人工智能 数据挖掘
Python编程入门:从基础到实战
【9月更文挑战第26天】 在这篇文章中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和技巧。我们将从Python的基本语法开始,然后逐步深入到更复杂的主题,如函数、类和模块。最后,我们将通过一个实际的项目来应用我们所学的知识。让我们一起开始这段Python编程之旅吧!
|
4天前
|
数据可视化 Python
使用Python进行数据可视化:从入门到精通
【8月更文挑战第60天】本文是一篇面向初学者的Python数据可视化教程,旨在帮助读者掌握如何使用Python及其强大的库(如Matplotlib和Seaborn)来创建引人入胜的数据可视化。我们将从基础开始,逐步深入,最终达到能够独立完成复杂数据可视化项目的水平。无论你的背景如何,只要你对数据可视化感兴趣,这篇文章都将为你开启一段新的学习之旅。
|
5天前
|
Python
Python 装饰器入门:让代码更灵活和可维护
Python 装饰器入门:让代码更灵活和可维护
10 1
|
7天前
|
设计模式 开发者 Python
Python中的装饰器:从入门到精通
【9月更文挑战第25天】本文深入浅出地介绍了Python装饰器的使用,包括其定义、语法和实际应用。通过实例演示如何利用装饰器增强函数功能,同时探讨了装饰器的高级用法如带参数的装饰器和装饰器嵌套。最后,文章强调了在设计装饰器时应避免的常见陷阱。
|
7天前
|
前端开发 开发者 Python
从零到一:Python Web框架中的模板引擎入门与进阶
在Web开发的广阔世界里,模板引擎是连接后端逻辑与前端展示的重要桥梁。对于Python Web开发者而言,掌握模板引擎的使用是从零到一构建动态网站或应用不可或缺的一步。本文将带你从基础入门到进阶应用,深入了解Python Web框架中的模板引擎。
14 3
|
7天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
7天前
|
设计模式 缓存 中间件
探索Python中的装饰器:从入门到实践
【9月更文挑战第25天】本文通过直观的语言和生动的比喻,深入浅出地介绍Python装饰器的概念、原理及应用。我们将一起走进装饰器的魔法世界,解锁其在代码编写中的强大功能,让你的代码更加优雅和高效。
下一篇
无影云桌面