tencent cloud

文档反馈

支持标签功能

最后更新时间:2023-03-07 10:35:48

    标签(Tag)是腾讯云提供的云资源管理工具,以 key:values 的形式存在,用来关联您的绝大部分云资源,对于资源的分类、搜索和聚合十分有用。
    在 Terraform 中,通过 Map 来定义一个资源的 Tag :

    resource "tencentcloud_instance" "cvm" {
      tags = {
        key1: "val1",
        key2: "val2"
      }
    }
    

    Tag 代码实现

    通过云 API 对资源添加 Tag ,有两种实现方式,一种是通过 CreateAPI 参数传入:

    rsType := "instance"
    
    request := cvm.NewRunInstanceRequest()
    request.TagSpecification = append(request.TagSpecification, &cvm.TagSpecification{
      ResourceType: &rsType,
      Tags: []*cvm.Tag{
        {
          Key: &key,
          Value: &value,
        },
      },
    })
    

    目前仅有部分资源的创建 API 支持传入 Tag ,且数据结构也有所出入。为了统一管理 Tag 代码,我们采用第二种方式,即创建后单独调用 Tag API 关联,入参为 资源六段式 ,格式为:

    qcs:<project_id,此处置空>:<模块>:<地域>:<账号/uin>:<资源/ID>
    

    以 VPC 举例,如要修改 VPC 实例关联的 Tag ,入参如下:

    qcs::vpc:ap-singapore:uin/:vpc/vpc-xxxxxxxx
    

    代码中则调用封装好的 ModifyTags 即可:

    package main
    
    func ResourceTencentCloudVPCUpdate(d *schema.ResourceData, meta interface{}) {
      ctx := context.TODO()
      region := meta.(*TencentCloudClient).apiV3Conn.Region
      id := d.Id()
    
      resourceName := fmt.Sprintf("qcs::vpc:%s:uin/:vpc/%s", region, id)
      replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
      
      if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
        return err
      }
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持