一键批量为云资源打标签

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

背景

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

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

资源编排 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"
      }
    }
  }
}

然后借助 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)

当资源栈创建完成后,我们可以在 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" }]
      }
    }
  }
}

在使用此模板创建资源栈时,指定标签为 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)

当资源栈更新完成后,我们可以在 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
目录
相关文章
|
6月前
|
分布式计算 DataWorks 数据建模
DataWorks常见问题之如何批量修改集成资源组
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
数据采集 运维 DataWorks
DataWorks产品使用合集之Serverless资源组与旧版资源组对比有什么区别
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
存储 DataWorks Oracle
DataWorks产品使用合集之如何查看今日的公共调度资源组使用的实例数量
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
数据处理 调度
Dataphin功能Tips系列(31)-自定义资源组
某零售企业最近在做促销活动,希望保证某些数据处理任务(订单处理、库存更新)任务能够快速按时完成,如何保证这些高优任务的调度资源不被其他任务占用,能按时执行?
|
3月前
|
SQL DataWorks 安全
DataWorks产品使用合集之调度资源组与集成资源内部的实例如何进行共用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之公共集成资源组如何切换独享资源
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之等待上游执行的任务是否会占用资源组的资源
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
运维 数据中心
计算巢资源组功能的最佳实践
计算巢简介计算巢是阿里云开放给ISV与其客户的服务管理PaaS平台,旨在解决ISV云上交付、部署、运维问题,建立ISV与客户之间的通道。针对ISV的实际场景,计算巢提供了私有化部署、托管版部署、代运维服务三种模式。托管版和私有化部署的区别是针对于部署在ISV的账号下还是部署在用户账号下。本文主要介绍计算巢不同场景下使用资源组功能的最佳实践。功能介绍资源组能够对用户拥有的云资源从用途、权限、归属等维
计算巢资源组功能的最佳实践
|
6月前
|
存储 分布式计算 DataWorks
MaxCompute资源问题之修改资源组如何解决
MaxCompute资源指的是在MaxCompute项目中使用的计算资源和存储资源;本合集旨在向用户展示如何高效管理MaxCompute资源,包括资源包管理、配额调整和性能优化等方面。
104 0
|
DataWorks 数据库 数据安全/隐私保护
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
DataWorks调用数据源服务失败:没有绑定数据服务资源组 默认就是使用的公共资源组是么?
167 1
下一篇
无影云桌面