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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: 部门,值:新零售),如何快速批量修改标签呢?

场景

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

背景信息

运维编排服务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控制台云资源分组管理---全局标签

目录
相关文章
|
11月前
|
弹性计算 关系型数据库 RDS
运维编排系列场景-批量开启资源删除保护
背景删除保护是云产品针对云资源的一种保护措施,防止资源被意外删除。当您启用删除保护时,针对资源的删除操作将会失败,有效避免因操作疏忽、团队成员沟通不及时等原因造成不可挽回的后果。本文为您介绍如何通过运维编排批量开启资源删除(释放)保护。前提条件为ECS实例开启释放保护前提条件,参见开启和关闭实例释放保护。为用户主密钥(CMK)开启或关闭删除保护前提条件,参见开启删除保护。为RDS实例开启释放保护前
95 0
运维编排系列场景-批量开启资源删除保护
|
弹性计算
使用OOS定时给特定名称开头的ECS实例打标签
使用OOS定时给名称中包含特定字符开头的ECS实例打标签。
131 1
使用OOS定时给特定名称开头的ECS实例打标签
|
弹性计算 运维 监控
标记 (TAG) 您的运维编排(OOS)资源
为了方便管理阿里云运维编排(OOS)资源,您可以选择通过标签的形式为每个资源分配您自己的元数据。本主题介绍标签并说明如何创建标签。通过也可以基于运维编排管理其他支持标签的云产品资源。
892 0
标记 (TAG) 您的运维编排(OOS)资源
|
12月前
|
弹性计算 运维 安全
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(1)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(1)
62 0
|
12月前
|
弹性计算 运维 监控
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(2)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(2)
60 0
|
12月前
|
弹性计算 JSON 运维
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(3)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(3)
92 0
|
12月前
|
弹性计算 运维
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(4)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(上):OOS 与总结(4)
63 0
|
12月前
|
弹性计算 运维
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(1)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(1)
98 0
|
12月前
|
弹性计算 运维
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(2)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(2)
55 0
|
12月前
|
弹性计算 运维 安全
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(3)
《企业运维之弹性计算原理与实践》——第六章 OOS 与总结——第六章(下):运维编排 OOS 案例(3)
74 0