一键批量为云资源打标签

本文涉及的产品
资源编排,不限时长
简介: ## 背景 现如今,越来越多的人开始使用云产品,创建各种各样的云资源。随着使用云资源种类和数量的增多,我们越来越需要对它们进行分类管理,而标签就是一种很好的分类方式。 作为个人用户,以手动方式给每个云资源打标签倒在能接受的范围。但如果作为企业用户,要管理成百上千的云资源,每次创建一批云资源都需要手动挨个打标签实在是难以忍受。哪怕是写代码,也需要依次调用各个云产品的标签接口,或者是调用标

背景

现如今,越来越多的人开始使用云产品,创建各种各样的云资源。随着使用云资源种类和数量的增多,我们越来越需要对它们进行分类管理,而标签就是一种很好的分类方式。

作为个人用户,以手动方式给每个云资源打标签倒在能接受的范围。但如果作为企业用户,要管理成百上千的云资源,每次创建一批云资源都需要手动挨个打标签实在是难以忍受。哪怕是写代码,也需要依次调用各个云产品的标签接口,或者是调用标签服务的统一接口来给不同的参数,但不论哪种方式都不够简单直接。

资源编排 ROS 为云产品打标签

什么是 ROS

资源编排服务 ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理的服务。用户可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系等。ROS 的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。点此 可以了解更多关于 ROS 的内容。

云产品中的每个资源实体和 ROS 中的资源一一对应,在 ROS 模板中通过定义云产品资源,即可通过 ROS 管理这些资源的完整生命周期(创建、更新、查询、删除)。点此 可以了解 ROS 所支持的数百个资源类型。

如何使用 ROS 为云产品打标签

当准备好一个模板后,要这个模板中的所有资源打上标签就非常简单,只需在使用模板创建 ROS 资源栈 时指定标签即可。

假设我们需要在地域为杭州,可用区为 cn-hangzhou-h 下创建 VPC 和 VSwitch,并为它们打上内容为 app:test 的标签。我们可以准备如下模板:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "VPC": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest-vpc"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "ZoneId": "cn-hangzhou-h",
        "CidrBlock": "172.16.0.0/24",
        "VSwitchName": "mytest-vsw-h"
      }
    }
  }
}
AI 代码解读

然后借助 ROS SDK 或 API 来创建资源栈,并指定标签(注意替换<>的内容):

# pip install aliyun-python-sdk-ros
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20190910.CreateStackRequest import CreateStackRequest

client = AcsClient(
    '<AccessKeId>',
    '<AccessKeySecret>',
    'cn-hangzhou',
)
template = '''
<Template>
'''

req = CreateStackRequest()
req.set_StackName('vpc-vswitch-test')
req.set_TemplateBody(template)
req.set_TimeoutInMinutes(10)
req.set_Tags([{'Key': 'app', 'Value': 'test'}])
ret = client.do_action_with_exception(req)
print(ret)
AI 代码解读

当资源栈创建完成后,我们可以在 ROS 和 VPC 控制台上看到 ROS Stack、VPC、VSwitch 都打上了标签。
1.jpg

2.jpg

3.jpg

标签融合

有时候,我们并不总是希望所有资源的标签完全一样,某些资源我们希望有它独特的标签。我们可以在模板中为某些资源定义指定的标签,并在创建资源栈时指定公共的标签,ROS 会自动融合标签。

比如,我们在如下模板中为 VSwitch 添加特定标签 group:test

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "VPC": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest-vpc"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VpcId": { "Ref": "VPC" },
        "ZoneId": "cn-hangzhou-h",
        "CidrBlock": "172.16.0.0/24",
        "VSwitchName": "mytest-vsw-h",
        "Tags": [{ "Key": "group", "Value": "test" }]
      }
    }
  }
}
AI 代码解读

在使用此模板创建资源栈时,指定标签为 app:test,那么 ROS 会将所指定的标签融合到模板中的每个资源中,那么最终各资源的标签效果如下:

  • VPC 的标签为 app:test
  • VSwitch 的标签为 app:testgroup:test

标签更新

批量更新标签也是个常见的需求,通过 ROS 可以非常容易的对所有资源的标签进行更新。比如我们在一开始通过 ROS 创建了 VPC、VSwitch,其标签为 app:test,现在我们想要统一改成 app:normal,那么只需在调用更新资源栈时指定新的标签即可(注意替换<>的内容,其中模板仍为第一个示例中的模板):

# pip install aliyun-python-sdk-ros
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkros.request.v20190910.UpdateStackRequest import UpdateStackRequest

client = AcsClient(
    '<AccessKeId>',
    '<AccessKeySecret>',
    'cn-hangzhou',
)
template = '''
<Template>
'''

req = UpdateStackRequest()
req.set_StackId('<StackId>')
req.set_TemplateBody(template)
req.set_Tags([{'Key': 'app', 'Value': 'normal'}])
ret = client.do_action_with_exception(req)
print(ret)
AI 代码解读

当资源栈更新完成后,我们可以在 ROS 和 VPC 控制台上看到 ROS Stack、VPC、VSwitch 的标签均变成了 app:normal

总结

通过 ROS,为所有资源批量打标签、更新标签变得十分简单,而标签融合功能则同时满足了打标的统一性和特定性。真正地把人从手工运维中解放出来。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
2
分享
相关文章
DataWorks常见问题之如何批量修改集成资源组
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
102 1
DataWorks产品使用合集之如何查看今日的公共调度资源组使用的实例数量
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
Dataphin功能Tips系列(31)-自定义资源组
某零售企业最近在做促销活动,希望保证某些数据处理任务(订单处理、库存更新)任务能够快速按时完成,如何保证这些高优任务的调度资源不被其他任务占用,能按时执行?
DataWorks产品使用合集之公共集成资源组如何切换独享资源
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks操作报错合集之购买了独享的调度资源组,在运维界面批量修改调度资源组报错了,而且也没有资源组显示,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
53 0
DataWorks如何查看今日的公共调度资源组使用的实例数量?
DataWorks如何查看今日的公共调度资源组使用的实例数量?
82 2
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
174 1
DSW的资源组为什么没有选项
DSW的资源组为什么没有选项
54 1
使用资源编排为云资源批量绑定标签
本场景介绍利用资源编排服务ROS(Resource Orchestration Service)在资源栈中创建资源,并同时为资源绑定标签,提升运维效率。
Dataphin自定义资源组功能全新上线!
V3.10 版本中,Dataphin 全新上线调度资源分组管理的功能,能够帮助您统一管理部署Dataphin实例的物理机集群资源。您可以将资源划分为不同的配额组,不同资源组之间的资源配额互相独立,并支持为不同租户、统一租户下不同项目内的任务单独指定调度时使用的自定义资源组,从而保障核心任务的资源不被抢占,同时也提升整体资源利用率。
474 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等