AWS CDK添加aws前缀标签报错 如何让服务展示在Cost Explorer标签列表
问题根因
aws:前缀属于AWS预留的系统标签命名空间,仅允许AWS官方服务自行创建、修改,禁止用户手动配置这类标签,你手动添加aws:cloudformation:stack-name标签的操作违反了这个规则,所以触发CloudFormation部署报错。- 你看到第一个服务自带该标签,是CloudFormation部署栈时自动给关联资源打的系统标签,无需用户手动定义。
修复步骤
1. 先解决部署报错
删除代码中手动添加aws:cloudformation:stack-name标签的行,避免后续部署失败。
2. 配置Cost Explorer可筛选两个服务的成本
你可以选以下任意一种方案实现需求:
方案一:无需额外打标签,直接使用系统自带维度
Cost Explorer默认支持按CloudFormation栈名筛选成本,你直接在Cost Explorer的筛选条件中选择「Stack Name」,勾选两个服务对应的CloudFormation栈名称,即可分别查看两个服务的成本数据。
方案二:使用自定义标签统一筛选
如果希望用标签作为统一筛选维度,可以给第二个服务的所有资源打自定义标签,步骤如下:
- 调整CDK代码,添加无
aws:前缀的自定义标签,示例代码:
export class CdkStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props: scStackProps<ICdkStackProps>) { super(scope, id, props); const {config, context} = props; const vpc = ec2.Vpc.fromLookup(this, "vpc", { vpcName: "baseInfrastructure/vpc", }); // 使用自定义标签键,禁止使用aws:前缀 cdk.Tags.of(this).add("ServiceName", `${config.container.name}`); } }
- 部署更新完成后,进入AWS控制台的Cost Explorer页面,打开「成本分配标签」设置,找到你自定义的标签键(比如示例中的
ServiceName),勾选后点击激活。 - 标签激活后最多等待24小时,对应的成本数据就会同步完成,你就可以在Cost Explorer中用这个标签筛选两个服务的成本了。
内容的提问来源于stack exchange,提问作者Ashish Karpe
相关产品推荐
相关产品推荐

