一键批量为云资源打标签

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

背景

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

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

资源编排 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
目录
相关文章
|
3月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之公共集成资源组如何切换独享资源
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之等待上游执行的任务是否会占用资源组的资源
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
运维 数据中心
计算巢资源组功能的最佳实践
计算巢简介计算巢是阿里云开放给ISV与其客户的服务管理PaaS平台,旨在解决ISV云上交付、部署、运维问题,建立ISV与客户之间的通道。针对ISV的实际场景,计算巢提供了私有化部署、托管版部署、代运维服务三种模式。托管版和私有化部署的区别是针对于部署在ISV的账号下还是部署在用户账号下。本文主要介绍计算巢不同场景下使用资源组功能的最佳实践。功能介绍资源组能够对用户拥有的云资源从用途、权限、归属等维
计算巢资源组功能的最佳实践
|
6月前
|
存储 分布式计算 DataWorks
MaxCompute资源问题之修改资源组如何解决
MaxCompute资源指的是在MaxCompute项目中使用的计算资源和存储资源;本合集旨在向用户展示如何高效管理MaxCompute资源,包括资源包管理、配额调整和性能优化等方面。
103 0
|
6月前
|
SQL 弹性计算 运维
构建多账号云环境的解决方案|多账号资源全局可见及搜索
对于企业客户来说,资源通常会分布在不同的云账号内,多账号、多产品、多地域的资源结构给客户在资源管理上带来了一定的挑战。针对客户在管理资源时无全局资源视图、资源查找繁琐、问题定位链路长等痛点问题,资源中心提供了在一个面板内集中查看和检索云上资源,不受限于账号、产品、地域、资源类型,提升资源管理效率。本次分享将为您介绍如何基于资源中心实现对跨账号、跨产品、跨地域的全局资源视图及资源搜索能力,对云上资源全貌了然于心。
127 1
使用资源编排为云资源批量绑定标签
本场景介绍利用资源编排服务ROS(Resource Orchestration Service)在资源栈中创建资源,并同时为资源绑定标签,提升运维效率。
|
运维 API 数据安全/隐私保护
资源中心 - 助您轻松解决跨账号、跨产品、跨地域的资源搜索难题
资源中心为您提供跨账号、跨产品、跨地域的全局资源视图及资源搜索能力。
5492 0
资源中心 - 助您轻松解决跨账号、跨产品、跨地域的资源搜索难题
|
SQL 运维 资源调度
Dataphin自定义资源组功能全新上线!
V3.10 版本中,Dataphin 全新上线调度资源分组管理的功能,能够帮助您统一管理部署Dataphin实例的物理机集群资源。您可以将资源划分为不同的配额组,不同资源组之间的资源配额互相独立,并支持为不同租户、统一租户下不同项目内的任务单独指定调度时使用的自定义资源组,从而保障核心任务的资源不被抢占,同时也提升整体资源利用率。
462 0
|
存储 运维 资源调度
资源画像,让容器资源规格的填写不再纠结
阿里云容器服务 ACK 为 Kubernetes 原生的工作负载提供了资源画像的能力,实现容器粒度的资源规格推荐,可以有效简化应用管理员为 Pod 配置 Request 和 Limit 的复杂度。
资源画像,让容器资源规格的填写不再纠结
|
弹性计算 负载均衡 NoSQL
使用创建者标签对云上资源进行管理
简介: 如果您需要根据资源创建者来对资源进行管理、分权和分账等操作,那么创建者标签可以帮助您简单、快速地实现您的需求。
670 0
使用创建者标签对云上资源进行管理