场景
当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: 部门,值:新零售),如何快速批量修改标签呢?
背景信息
运维编排服务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": {}
}
创建执行:
执行详情:
当执行状态显示成功,表示运维任务已完成。
当执行状态显示失败,您可以单击操作列下的详情查看执行日志,并根据日志信息分析和调整执行内容。
可以根据本文的代码修改为自己需要的cases。
相关文档
标记您的 RDS 资源
标记您的 SLB 资源
标记您的 ECS 资源
如何检查您的资源是否具有您指定的标签?
基于标签批量管理资源
支持标签产品及其文档
标签的最佳实践
通过OOS基于标签批量启动ECS实例实践
如何使用标签控制对ECS 资源的访问?
使用标签检索资源
创建资源标签分组设置
ECS全局标签实践
ECS控制台云资源分组管理---全局标签