AWS CDK TypeScript中如何替换已弃用的DynamoDB资源标签方法?
替换AWS CDK中已弃用的
Tag.add()方法 没问题,我来帮你搞定这个标签替换的事儿!AWS CDK从v2版本开始就推荐使用Tags类(注意是复数形式)的API来替代旧的Tag.add(),这个新API不仅更符合现代CDK的设计风格,还提供了更丰富的标签管理能力。
具体修改步骤:
- 更新导入语句:把原来的
import { Tag } from "@aws-cdk/core";改成import { Tags } from "@aws-cdk/core";(如果是CDK v2,核心包已合并为aws-cdk-lib,导入应为import { Tags } from "aws-cdk-lib";) - 替换标签添加逻辑:将
Tag.add(resource, "Key", "value");替换为Tags.of(resource).add("Key", "value");
修改后的完整代码:
// CDK v1 版本导入 import * as core from "@aws-cdk/core"; import * as dynamodb from "@aws-cdk/aws-dynamodb"; import { Tags } from "@aws-cdk/core"; // CDK v2 版本导入(v2已统一合并包) // import * as cdk from "aws-cdk-lib"; // import * as dynamodb from "aws-cdk-lib/aws-dynamodb"; // import { Tags } from "aws-cdk-lib"; export class DynamoDbTable extends core.Construct { constructor(scope: core.Construct, id: string) { super(scope, id); // 用新API重写标签添加函数 function addTags(resource : any) { Tags.of(resource).add("Key", "value"); } const table = new dynamodb.Table(this, "abcd", { partitionKey: { name: "name", type: dynamodb.AttributeType.STRING }, stream: dynamodb.StreamViewType.NEW_AND_OLD_IMAGES, tableName: 'tableName', billingMode: dynamodb.BillingMode.PAY_PER_REQUEST, }); addTags(table); } }
额外实用提示:
- 如果你需要给整个栈或批量资源统一加标签,可以直接在栈级别调用:
Tags.of(this).add("Environment", "Production");,该栈下所有支持标签的资源都会自动继承这个标签 Tags类还提供了remove()方法移除标签、adds()方法批量添加多组标签,比旧API灵活得多
内容的提问来源于stack exchange,提问作者ABCD
相关产品推荐
相关产品推荐

