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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 阿里云资源编排服务(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

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

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
15小时前
|
机器学习/深度学习 数据采集 数据可视化
利用Python进行历史数据预测:从入门到实践的两个案例分析
利用Python进行历史数据预测:从入门到实践的两个案例分析
10 1
|
6天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
8天前
|
Python
【Python21天学习挑战赛】-入门必备
【Python21天学习挑战赛】-入门必备
|
11天前
|
数据采集 安全 API
阿里云大学考试python中级题目及解析-python高级
阿里云大学考试python中级题目及解析-python高级
|
11天前
|
存储 SQL 缓存
阿里云大学考试python中级题目及解析-python中级
阿里云大学考试python中级题目及解析-python中级
16 0
|
11天前
|
机器学习/深度学习 存储 数据可视化
阿里云大学考试python初级-python初级
阿里云大学考试python初级-python初级
|
11天前
|
存储 Python
python入门指南
python入门指南
17 0
|
12天前
|
机器学习/深度学习 自然语言处理 算法
利用Python进行情感分析:从入门到实践
【4月更文挑战第24天】 在数字化时代,文本数据无处不在。理解这些文本背后的情绪倾向对于品牌管理、市场研究乃至政治分析都至关重要。本文将引导读者通过Python编程语言实现基本的情感分析任务,涵盖从预处理步骤到模型训练和结果解释的全过程。我们将使用流行的自然语言处理库NLTK和机器学习框架scikit-learn来构建一个简单的情感分析模型,并探索如何将其应用于实际场景中。
|
12天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念

推荐镜像

更多