成本优化

账单看不清归属,优化就永远推不动

我们做成本治理的第一件事永远是打标签。标签覆盖率上不到 95%,后面所有分析都是估算。

  • 标签覆盖目标≥ 95%
  • 分摊粒度业务线 / 团队 / 环境 / 应用
  • 落地周期3-5 周

标签规范模板

标签键示例值用途是否必填
CostCenterretail-ecommerce成本归属到业务线,对应财务成本中心必填
Environmentprod / staging / dev环境区分,非生产可做定时启停必填
Ownerowner@example.com责任人,异常时直接找到人必填
Applicationorder-service应用维度,看单个应用的总成本必填
Project2026-Q3-upgrade项目维度,用于项目预算核算选填
DataClassconfidential / internal数据分级,驱动加密与访问策略敏感资源必填
AutoShutdowntrue / false驱动自动化启停,非生产默认 true选填

标签键区分大小写,务必统一规范。我们见过同一个组织里 CostCenter、costcenter、Cost-Center 三种写法并存。

可视化建设四步

  1. 01

    定规范并对齐财务

    标签键值必须和财务的成本中心口径一致,否则做出来的报表财务不认。

    交付物:标签规范文档、财务口径确认单

    1 周

  2. 02

    存量资源补标

    扫描全量资源,未打标的按归属推断后批量补齐。跑不通的走人工认领流程。

    交付物:未打标资源清单、批量补标脚本、覆盖率报告

    1-2 周

  3. 03

    增量强制与自动化

    SCP 或 Config 规则拦截未打标的创建行为,Lambda 自动补齐可推断的标签。

    交付物:标签策略、自动打标 Lambda、违规告警

    1 周

  4. 04

    报表与看板

    基于 CUR 建 Athena 表,QuickSight 出多维看板,按月自动推送给各负责人。

    交付物:CUR 数据管道、成本看板、月度推送流程

    1-2 周

CUR 成本分析 SQL

sql cost-by-business-line.sql
-- 基于 Cost and Usage Report 的业务线成本归因分析
-- 前置:CUR 已导出到 S3 并通过 Glue Crawler 建表

WITH monthly AS (
    SELECT
        DATE_TRUNC('month', line_item_usage_start_date)          AS month,
        COALESCE(NULLIF(resource_tags_user_cost_center, ''),
                 '__UNTAGGED__')                                 AS cost_center,
        COALESCE(NULLIF(resource_tags_user_environment, ''),
                 '__UNKNOWN__')                                  AS env,
        product_product_name                                     AS service,
        line_item_line_item_type                                 AS item_type,
        SUM(line_item_unblended_cost)                            AS unblended,
        SUM(CASE WHEN line_item_line_item_type = 'SavingsPlanCoveredUsage'
                 THEN savings_plan_savings_plan_effective_cost
                 WHEN line_item_line_item_type = 'DiscountedUsage'
                 THEN reservation_effective_cost
                 ELSE line_item_unblended_cost END)              AS amortized
    FROM cur_database.cur_table
    WHERE line_item_usage_start_date >= DATE_ADD('month', -6, CURRENT_DATE)
      AND line_item_line_item_type NOT IN ('Tax', 'Refund', 'Credit')
    GROUP BY 1, 2, 3, 4, 5
)
SELECT
    month,
    cost_center,
    env,
    ROUND(SUM(amortized), 2)                                     AS amortized_cost,
    ROUND(SUM(unblended), 2)                                     AS unblended_cost,
    -- 环比变化,用于识别异动
    ROUND(SUM(amortized) - LAG(SUM(amortized)) OVER (
        PARTITION BY cost_center, env ORDER BY month
    ), 2)                                                        AS mom_delta,
    ROUND(100.0 * (SUM(amortized) - LAG(SUM(amortized)) OVER (
        PARTITION BY cost_center, env ORDER BY month
    )) / NULLIF(LAG(SUM(amortized)) OVER (
        PARTITION BY cost_center, env ORDER BY month
    ), 0), 1)                                                    AS mom_pct
FROM monthly
GROUP BY month, cost_center, env
ORDER BY month DESC, amortized_cost DESC;

-- 未打标资源专项:这部分必须持续压缩到 5% 以内
SELECT
    line_item_product_code                                       AS service,
    line_item_resource_id                                        AS resource_id,
    ROUND(SUM(line_item_unblended_cost), 2)                      AS cost_30d
FROM cur_database.cur_table
WHERE line_item_usage_start_date >= DATE_ADD('day', -30, CURRENT_DATE)
  AND COALESCE(NULLIF(resource_tags_user_cost_center, ''), '') = ''
  AND line_item_resource_id <> ''
GROUP BY 1, 2
HAVING SUM(line_item_unblended_cost) > 10
ORDER BY cost_30d DESC
LIMIT 100;

看成本要用 amortized(摊销)成本而不是 unblended,否则买 Savings Plans 那个月的账单会显得异常高。

下一步

把云的复杂度交给我们,你只管做业务

留下需求,沐杉云的解决方案架构师会在一个工作日内联系你,提供免费的现状评估、迁移方案草案与 TCO 测算表。