您可以使用资源编排服务ROS(Resource Orchestration Service)创建资源栈,在资源栈中创建资源,并同时为资源绑定标签,方便日后的运维管理。支持为多个云资源批量绑定或更新标签,提升运维效率。

背景信息

本文将使用ROS Python SDK创建资源栈。更多信息,请参见Python SDK使用示例

为多个云资源绑定相同标签

如下将提供一个示例,使用资源栈创建专有网络VPCmytest-vpc和交换机VSwitchmytest-vsw-h,并同时为VPC和VSwitch绑定app:test标签。

  1. 编写模板。
    {
      "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"
          }
        }
      }
    }

    模板说明:创建一个VPC和一个VSwitch。

  2. 创建资源栈,并为VPC和VSwitch绑定标签app:test
    # pip install aliyun-python-sdk-ros
    import json
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkros.request.v20190910.CreateStackRequest import CreateStackRequest
    
    client = AcsClient(
        '<AccessKeyId>',
        '<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)

    参数说明:

    • <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
    • <Template>请替换为步骤1中的模板。
  3. 可选:登录专有网络管理控制台,查看VPC和VSwitch绑定的标签。

    当VPC和VSwitch都绑定了标签app:test,表示操作成功。

为多个云资源绑定不同标签

如下将提供一个示例,使用资源栈创建专有网络VPC mytest-vpc和交换机VSwitch mytest-vsw-h,为VPC和VSwitch绑定通用标签 app:test,除此之外还要为VSwitch绑定特定标签 group:test。最终效果为:
  • VPCmytest-vpc绑定的标签:app:test
  • VSwitchmytest-vsw-h绑定的标签:app:testgroup:test
  1. 编写模板。
    {
      "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" }]
          }
        }
      }
    }

    模板说明:创建一个VPC和一个VSwitch,并为VSwitch绑定特定标签group:test

  2. 创建资源栈,并为VPC和VSwitch绑定通用标签app:test
    # pip install aliyun-python-sdk-ros
    import json
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkros.request.v20190910.CreateStackRequest import CreateStackRequest
    
    client = AcsClient(
        '<AccessKeyId>',
        '<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)

    参数说明:

    • <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
    • <Template>请替换为步骤1中的模板。
  3. 可选:登录专有网络管理控制台,查询VPC和VSwitch绑定的标签。

    当VPC绑定的标签为app:test,VSwitch绑定的标签为app:testgroup:test时,表示操作成功。

为多个云资源更新标签

如下将提供一个示例,在为多个云资源绑定相同标签的基础上,将VPCmytest-vpc和VSwitchmytest-vsw-h已绑定的标签app:test更新为app:normal

  1. 创建资源栈,并为VPC和VSwitch绑定新标签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)

    参数说明:

  2. 可选:登录专有网络管理控制台,查询VPC和VSwitch绑定的标签。

    当VPC和VSwitch都绑定了新标签app:normal时,表示操作成功。