tencent cloud

云资源自动化 for Terraform

产品简介
产品概述
产品优势
应用场景
购买指南
快速开始
本地使用
工具指南
配置指南
语法指南
资源列表
结合 Devops
代码管理
持续集成与部署
实践教程
部署云原生服务
资源跨地域复制
客户案例
Convertlab 基于腾讯云 Terraform 的 IaC 实践
Provider 共建
欢迎
贡献
开发者参考
常见问题
签名错误
Init 加速
开启日志追踪
管理现存资源
状态锁

支持标签功能

PDF
聚焦模式
字号
最后更新时间: 2025-02-12 11:50:23
标签(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
}
}


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈