借助AFT或LZA实现AWS成本分配标签的方法咨询
使用AWS AFT和LZA实现成本分配标签方案
针对AFT的实现方式
AFT完全支持通过自定义钩子批量配置成本分配标签,这是落地中常用的方案:
- 借助AFT的预配置/后配置钩子,编写Terraform代码实现两类标签配置:
- 给AWS账户本身打标签(通过
aws_organizations_account资源),这类标签会同步到账单系统 - 批量给账户内现有资源打标签(通过
aws_resourcegroups_tagging_api资源),覆盖EC2、S3等核心资源
- 给AWS账户本身打标签(通过
- 示例代码片段:
# 给账户本身打成本分配标签 resource "aws_organizations_account" "target_account" { id = var.aft_account_id tags = { CostCenter = var.cost_center Environment = var.environment Project = var.project } } # 批量给账户内所有EC2实例打标签 resource "aws_resourcegroups_tagging_api" "tag_ec2" { resource_type_filters = ["ec2:instance"] tags = { CostCenter = var.cost_center } }
- 确保AFT执行钩子的IAM角色拥有
organizations:TagResource、resource-groups:TagResources等权限
针对LZA的实现方式
LZA通过内置模块原生支持成本分配标签:
- 在LZA的账户配置文件(如
config/accounts.yaml)中定义全局或账户级标签,LZA会在账户创建阶段自动将这些标签应用到账户本身 - 配置LZA的标签策略模块,强制要求所有新创建的资源继承成本分配标签,还可通过SCP限制未打标签的资源创建
- 对于存量资源,可通过LZA的批量标签自动化模块或自定义Terraform脚本补打标签
关键注意事项
- 无论用AFT还是LZA配置的标签,都需要在AWS Billing控制台的「成本分配标签」页面手动启用,才能在成本和使用报告中展示
- 统一标签命名规范(如
CostCenter、Environment、Project),避免大小写或命名不一致导致账单统计混乱
内容的提问来源于stack exchange,提问作者Stanley
相关产品推荐
相关产品推荐

