通过创建运维编排服务(OOS)自定义模板,您可以批量修改同一地域下的数百个资源的同一标签的标签值。

前提条件

已为ECS实例绑定一个标签,详情请参见创建并绑定标签

背景信息

本文以ECS实例为例,创建一个OOS自定义模板,该模板支持一次性修改数百台ECS实例的同一标签值。ECS实例绑定的源标签键值对为 TagKey:OldTagValue,修改后将变为 TagKey:NewTagValue
说明
  • 批量修改资源的数量上限为1000,资源数量大于1000时需要多次执行自定义模板。
  • OOS自定义模板可以修改同一地域下任何支持绑定标签的资源,您只需要根据您的业务需求修改相应接口,支持绑定标签的资源,详情请参见支持标签的云服务OOS支持的资源,详情请参见OOS支持的云产品列表

步骤一:创建模板

您可以参考以下步骤,创建批量修改标签值的OOS自定义模板。

  1. 登录OOS控制台
  2. 在顶部菜单栏左上角处,选择地域。
  3. 在左侧导航栏,单击我的模板
  4. 单击创建模板
  5. 单击空白模板页签,选择空白模板,单击选取。
  6. 在右侧基本信息栏中,输入模板名称,按需添加标签。
  7. 单击JSON页签,在下方代码区域编写模板代码。代码示例如下所示。
    {
        "Description": "批量修改资源的标签值",
        "FormatVersion": "OOS-2019-06-01",
        "Parameters": {
            "operateId": {
                "Description": "自定义您的操作ID",
                "Type": "String",
                "MinLength": 1,
                "MaxLength": 64
            },
            "tagKey": {
                "Description": "当前标签键",
                "Type": "String",
                "MinLength": 1,
                "MaxLength": 64
            },
            "tagValue": {
                "Description": "当前标签值",
                "Type": "String",
                "MinLength": 1,
                "MaxLength": 64
            },
            "newTagValue": {
                "Description": "修改后的标签值",
                "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}}"
                }
            }
        ],
        "Outputs": {}
    }
  8. 单击创建模板,完成模板创建。

步骤二:执行模板

您可以参考以下步骤,执行步骤一创建的模板,批量修改标签值。

  1. 在左侧导航栏,单击我的模板
  2. 找到步骤一新建的模板,单击操作列下的创建执行
  3. 填写执行描述,并选择执行模式,然后单击下一步:设置参数
  4. 输入各项参数,然后单击下一步:确定

    参数说明如下:

    • operateId:操作ID,用于区分每次操作,可自定义输入。
    • tagKey:当前标签键,即想修改标签值的对应标签键,本示例为TagKey
    • tagValue:当前标签值,即修改前的标签值,本示例为OldTagValue
    • newTagValue:新标签值,即修改后的标签值,本示例为NewTagValue
  5. 单击创建开始执行。

    执行完成后将自动跳转到执行详情页面,可查看执行结果。

    说明 如果执行失败,您可以通过查看执行日志来定位失败原因。