基于OOS批量修改资源标签(TAG)值(Value)

简介: 当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: 部门,值:新零售),如何快速批量修改标签呢?

场景

当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: 部门,值:新零售),如何快速批量修改标签呢?

背景信息

运维编排服务OOS通过模板定义您需要编排的运维任务。模板内容支持YAML和JSON两种格式,模版分为公共模版和自定义模版两种类型。为了方便您快速使用OOS,OOS提供了公共模板供您直接使用和参考。。在使用模板前您需要仔细审查模板所要执行的运维任务,并优先在测试环境观察使用效果。

您也可以编写自定义模板来编写您所需要的运维任务。更多详情,请参见模板结构。本文中的TagResourcesFilterByTags是自定义模板

以下是针对ecs实例及redis实例进行标签值的更新的例子,你可以依据您的需要修改为对应的产品操作及查询接口,来修改资源标签。目前OOS支持的云产品列表参考文档

操作步骤

登录ECS管理控制台
在左侧导航栏,选择 运维与监控 > 运维编排
在顶部状态栏处,选择地域
选择 我的模板 点击 创建模版
选择JSON
以下示例是针对ecs实例及redis实例进行标签值的更新
operateId : 操作ID,区分每次操作使用
tagKey:标签键,用来过滤资源
tagValue:标签值,用来过滤资源
tagKey:标签键,要修改目标标签键
newTagValue:新标签值,要修改后的标签值

{
    "Description": "根据标签查找资源并更新标签",
    "FormatVersion": "OOS-2019-06-01",
    "Parameters": {
        "operateId": {
            "Description": "操作ID,调用者自定义",
            "Type": "String",
            "MinLength": 1,
            "MaxLength": 64
        },
        "tagKey": {
            "Description": "当前key",
            "Type": "String",
            "MinLength": 1,
            "MaxLength": 64
        },
        "tagValue": {
            "Description": "当前value",
            "Type": "String",
            "MinLength": 1,
            "MaxLength": 64
        },
        "newTagValue": {
            "Description": "更新后value",
            "Type": "String",
            "MinLength": 1,
            "MaxLength": 64
        }
    },
    "Tasks": [
        {
            "Name": "DescribeInstances_ECS",
            "Action": "ACS::ExecuteAPI",
            "Description": {
                "zh-cn": "通过标签过滤ECS实例",
                "en": "filter ecs instances by tags"
            },
            "Properties": {
                "Service": "ECS",
                "API": "DescribeInstances",
                "AutoPaging": true,
                "Parameters": {
                    "Tags": [
                        {
                            "Key": "{{ tagKey }}",
                            "Value": "{{ tagValue }}"
                        }
                    ]
                }
            },
            "Outputs": {
                "Instances": {
                    "Type": "List",
                    "ValueSelector": "Instances.Instance[].InstanceId"
                }
            }
        },
        {
            "Name": "TagResources_ECS_Instances",
            "Action": "ACS::ExecuteAPI",
            "Description": {
                "zh-cn": "更新ECS实例标签",
                "en": "tag ecs instances"
            },
            "Properties": {
                "Service": "ECS",
                "API": "TagResources",
                "Parameters": {
                    "Tags": [
                        {
                            "Key": "{{ tagKey }}",
                            "Value": "{{ newTagValue }}"
                        }
                    ],
                    "ResourceType": "Instance",
                    "ResourceIds": [
                        "{{ACS::TaskLoopItem}}"
                    ]
                }
            },
            "Loop": {
                "MaxErrors": "100%",
                "Concurrency": 20,
                "Items": "{{DescribeInstances_ECS.Instances}}"
            }
        },
        {
            "OnError": "ACS::NEXT",
            "Name": "DescribeInstances_REDIS",
            "Action": "ACS::ExecuteApi",
            "Description": {
                "zh-cn": "通过标签过滤REDIS实例",
                "en": "filter redis(kvstore) instances by tags"
            },
            "Properties": {
                "Service": "R-kvstore",
                "API": "DescribeInstances",
                "AutoPaging": true,
                "Parameters": {
                    "Tags": [
                        {
                            "Key": "{{ tagKey }}",
                            "Value": "{{ tagValue }}"
                        }
                    ]
                }
            },
            "Outputs": {
                "Instances": {
                    "Type": "List",
                    "ValueSelector": "Instances.KVStoreInstance[].InstanceId"
                }
            }
        },
        {
            "Name": "TagResources_REDIS_Instances",
            "Action": "ACS::ExecuteAPI",
            "Description": {
                "zh-cn": "更新REDIS实例标签",
                "en": "tag redis instances"
            },
            "Properties": {
                "Service": "R-kvstore",
                "API": "TagResources",
                "Parameters": {
                    "Tags": [
                        {
                            "Key": "{{ tagKey }}",
                            "Value": "{{ newTagValue }}"
                        }
                    ],
                    "ResourceType": "Instance",
                    "ResourceIds": [
                        "{{ACS::TaskLoopItem}}"
                    ]
                }
            },
            "Loop": {
                "MaxErrors": "100%",
                "Concurrency": 20,
                "Items": "{{DescribeInstances_REDIS.Instances}}"
            }
        }
    ],
    "Outputs": {}
}

创建执行:
image
执行详情:
image
image.png

当执行状态显示成功,表示运维任务已完成。
当执行状态显示失败,您可以单击操作列下的详情查看执行日志,并根据日志信息分析和调整执行内容。

可以根据本文的代码修改为自己需要的cases。

相关文档

标记您的 RDS 资源
标记您的 SLB 资源
标记您的 ECS 资源
如何检查您的资源是否具有您指定的标签?
基于标签批量管理资源
支持标签产品及其文档
标签的最佳实践
通过OOS基于标签批量启动ECS实例实践
如何使用标签控制对ECS 资源的访问?
使用标签检索资源
创建资源标签分组设置
ECS全局标签实践
ECS控制台云资源分组管理---全局标签

目录
相关文章
|
弹性计算 关系型数据库 RDS
运维编排系列场景-批量开启资源删除保护
背景删除保护是云产品针对云资源的一种保护措施,防止资源被意外删除。当您启用删除保护时,针对资源的删除操作将会失败,有效避免因操作疏忽、团队成员沟通不及时等原因造成不可挽回的后果。本文为您介绍如何通过运维编排批量开启资源删除(释放)保护。前提条件为ECS实例开启释放保护前提条件,参见开启和关闭实例释放保护。为用户主密钥(CMK)开启或关闭删除保护前提条件,参见开启删除保护。为RDS实例开启释放保护前
运维编排系列场景-批量开启资源删除保护
|
弹性计算
使用OOS定时给特定名称开头的ECS实例打标签
使用OOS定时给名称中包含特定字符开头的ECS实例打标签。
使用OOS定时给特定名称开头的ECS实例打标签
使用OOS定时清理指定Tag下的镜像
使用OOS定时清理指定标签下的镜像
|
弹性计算 运维 监控
标记 (TAG) 您的运维编排(OOS)资源
为了方便管理阿里云运维编排(OOS)资源,您可以选择通过标签的形式为每个资源分配您自己的元数据。本主题介绍标签并说明如何创建标签。通过也可以基于运维编排管理其他支持标签的云产品资源。
934 0
标记 (TAG) 您的运维编排(OOS)资源
|
弹性计算 负载均衡 测试技术
运维编排系列场景--跨可用区批量克隆ECS实例
背景可用区(Availability Zone,简称 AZ)是指在同一地域内,电力和网络互相独立的物理区域。例如,华北1(青岛)地域支持2个可用区,包括青岛 可用区B和青岛 可用区C。同一可用区内实例之间的网络延时更小,其用户访问速度更快。将应用部署在多个可用区可以提高应用的可用性,降低故障风险。然而,在实际应用中,有时需要将实例从一个可用区迁移到另一个可用区,以实现故障切换、负载均衡、数据备份与
运维编排系列场景--跨可用区批量克隆ECS实例
|
弹性计算 运维 数据中心
运维编排系列场景--跨账号跨地域实例操作系统补丁修复
运维编排(OOS) 简介什么是OOSOperation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更
|
弹性计算 运维 监控
运维编排系列场景--通过告警触发自动重启CPU使用率高的ECS实例
运维编排(OOS) 简介什么是OOSOperation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更
|
弹性计算 运维 监控
运维编排系列场景--使用定时运维进行状态逼近
### 面向终态的运维 阿里云运维编排服务(Operation Orchestration Service,简称OOS),是阿里云提供的云上自动化运维服务,能够自动化管理和执行任务。OOS支持定时运维功能,可以周期性重复执行指定的运维任务。基于定时运维,OOS能够对云资源的状态进行管理,实现面向终态的运维。 本文以[ilogtail](https://help.aliyun.com/d
运维编排系列场景--使用定时运维进行状态逼近
|
弹性计算 运维 网络安全
运维编排系列场景--批量管理自定义的软件包
运维编排(OOS) 简介 什么是OOS Operation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于
运维编排系列场景--批量管理自定义的软件包
|
弹性计算 运维 监控
运维编排系列场景-----在磁盘使用率超限时自动清理临时文件
### 场景介绍 有些应用在运行过程中会不断产生文件,比如下载的文件、备份文件、日志文件,我们需要在磁盘使用率过高后删除不再使用的或者过期的文件。这里我们以清理/tmp下的临时文件为例,说明如何通过运维编排(OOS)提供的公共模板来实现此类运维操作。 ### 解决方案 我们准备一台ECS实例,登陆进系统后,查看它的磁盘占用率: ![磁盘占用2.png](https: