阿里云资源编排服务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创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
2月前
|
搜索推荐 API 开发工具
百宝箱开放平台 ✖️ Python SDK
百宝箱提供Python SDK,支持开发者集成其开放能力。需先发布应用,安装Python 3.6+环境后,通过pip安装tboxsdk,即可调用对话型、生成型智能体及文件上传等功能。
774 87
百宝箱开放平台 ✖️  Python SDK
|
7月前
|
API 开发工具 网络架构
【Azure Service Bus】使用Python SDK创建Service Bus Namespace资源(中国区)
本文介绍了如何使用Python SDK创建Azure Service Bus Namespace资源。首先,通过Microsoft Entra ID注册应用获取Client ID、Client Secret和Tenant ID,完成中国区Azure认证。接着,初始化ServiceBusManagementClient对象,并调用`begin_create_or_update`方法创建资源。
189 29
|
6月前
|
传感器 机器人 开发者
ROS服务(Service)通信中的模型与实际应用: 初识Hello World并予以扩展
总而言之,ROS服务提供的是一种可靠而灵活的通信方式。每一次服务的请求和应答都会阻塞,直至应答完成。这意味着在调用服务之后,你可以确保你的请求被正确处理。这也是它在机器人系统中如此重要的原因,因为在许多情况下,我们需要获取实时、准确的结果,例如控制机器人执行精确的运动。
308 1
|
9月前
|
API 开发工具 Python
|
8月前
|
人工智能 API 开发工具
【AI大模型】使用Python调用DeepSeek的API,原来SDK是调用这个,绝对的一分钟上手和使用
本文详细介绍了如何使用Python调用DeepSeek的API,从申请API-Key到实现代码层对话,手把手教你快速上手。DeepSeek作为领先的AI大模型,提供免费体验机会,帮助开发者探索其语言生成能力。通过简单示例代码与自定义界面开发,展示了API的实际应用,让对接过程在一分钟内轻松完成,为项目开发带来更多可能。
|
10月前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
197 1
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
Ubuntu 机器人 Linux
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
491 1
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
503 14

推荐镜像

更多
  • ros