已解决:帮助我们了解 FinOps 成熟度与 cloud cost 挑战

发布: (2026年2月25日 GMT+8 21:38)
10 分钟阅读
原文: Dev.to

Source: Dev.to

TL;DR: 云成本超支源于可见性不足和缺乏所有权,典型表现为被遗忘的高成本实例。解决方案是采用多管齐下的 FinOps 方法,结合自动化清理脚本、主动的 policy‑as‑code 防护措施,以及向 showbackchargeback 的根本组织转变,以实现持续的财务问责。

核心建议

  1. 实现“Janitor”脚本(例如,AWS Lambda),自动识别并终止未打标签或被遗弃的云资源——一种被动的成本控制措施。
  2. 强制执行“Policy as Code”,使用 SentinelOpen Policy Agent (OPA)Service Control Policies (SCPs) 等工具,在 IaC 或 AWS 组织层面防止高成本或未打标签的资源创建。
  3. 通过 FinOps 实践推动组织变革,如 showback(展示团队特定的云支出)和 chargeback(将费用分配到团队预算),以培养财务所有权文化。

Source:

问题

“在与失控的云成本和不成熟的 FinOps 实践作斗争?这份由高级 DevOps 工程师撰写的指南分解了云浪费的真实原因,并提供了三种具体解决方案,从快速脚本到永久性的文化转变,帮助你控制支出。”

我仍然记得财务部门在周一早上的 Slack 消息:

“Darian,你能解释一下这次 AWS 的激增吗?”

打开计费控制台,我的胃一下子沉了下来。一名开发者在周五下午启动了一台 p4d.24xlarge EC2 实例,用于对新机器学习模型进行“快速测试”,随后 忘记 了它。仅在一个周末,这台实例就产生了 五位数 的费用。

我们没有任何防护栏、警报或所有权策略。这是一次自由放任的环境,而我们却为此付费——真的。

这并不是个例。团队被交付了云王国的钥匙,拥有巨大的创新能力,却缺乏财务素养和防护措施来负责任地使用。这正是 FinOps 成熟度挑战的核心。关键不在于“省钱”,而在于 高效可问责

根本原因

问题描述
缺乏可视性工程师无法实时看到他们所配置基础设施的成本。terraform apply 并不显示价格标签。计费是一个抽象概念,往往要等到几周后才会处理。
缺乏所有权当没有人对某个资源(例如 dev‑test‑data‑processing‑cluster‑04)直接负责时,就没有人有动力去关闭它。它就会变成“公司的基础设施”,成为一个共享问题。

解决方案不仅仅是找出僵尸服务器,更在于从根本上改变团队与云的交互方式。

方案 #1 – 反应式“止血” (清理脚本)

“这是一种反应式的‘止血’方法。你没有在根本上改变文化,但你阻止了眼前的浪费。”

我们构建了一个简单的 AWS Lambda 函数,由 EventBridge 每晚触发,完成以下工作:

  1. 扫描我们 dev 账户中的所有 EC2 实例和 RDS 数据库。
  2. 标记缺少 owner 标签或 TTL(生存时间)标签的资源。
  3. 向 Slack 频道发送警告,并标记创建者(如果可以通过 CloudTrail 识别)。
  4. 如果资源在 24 小时后仍未打标签,第二个 Lambda 将终止它。

结果: 严厉吗?是的。有效吗?绝对有效。

示例 Python(Boto3) – Lambda 清理器

import boto3

def find_untagged_instances(event, context):
    ec2 = boto3.client('ec2', region_name='us-east-1')
    instances = ec2.describe_instances(
        Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]
    )

    for reservation in instances['Reservations']:
        for instance in reservation['Instances']:
            instance_id = instance['InstanceId']
            tags = instance.get('Tags', [])
            tag_keys = [tag['Key'] for tag in tags]

            if 'owner' not in tag_keys:
                print(f"ALERT: Instance {instance_id} is missing 'owner' tag.")
                # In a real script, you'd post this to Slack or SNS
                # and maybe add a "pending_termination" tag

警告: 这是一种权宜之计,而非长期策略。它能清理混乱,但并未教会任何人避免再次出现混乱。你将花时间维护脚本,并处理因“重要测试服务器”被终止而愤怒的开发者。可以用它来快速获得初步控制,但不要止步于此

Source:

解决方案 #2 – “左移”预防(Policy‑as‑Code)

“这就是所谓的‘左移’,从一开始就防止问题的发生。与其事后清理混乱,不如让它们根本不可能出现。”

核心原则

将成本控制直接嵌入到你的 IaC 流水线和云账户结构中。

使用 IaC 策略进行强制标签

  • 工具: Sentinel(Terraform Cloud)、集成到 CI/CD 的 OPA。
  • 策略示例: 如果资源缺少 owner 标签,或 S3 存储桶缺少生命周期策略,则使 terraform plan 失败。
  • 结果: 开发者在任何内容部署 之前 就能收到即时反馈。

服务控制策略(SCP)

AWS 组织 级别对开发者账户应用 SCP。SCP 类似于“强化版 IAM 策略”,可以让你 拒绝 创建特定实例系列。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyExpensiveInstanceTypesInDev",
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:InstanceType": [
            "p4d.24xlarge",
            "g5.12xlarge",
            "g5.24xlarge"
          ]
        }
      }
    }
  ]
}
  • 使用场景: 在任何非指定 “ML Research” 组织单元(OU)的账户中,阻止所有 p4g5 等实例类型的创建。

方案 #3 – 组织变革(FinOps 实践)

“通过 FinOps 实践(如 ‘showback’ 和 ‘chargeback’)推动‘组织变革’,培养财务所有权文化。”

实施步骤

  1. Showback – 发布每周/每月仪表盘,按团队、项目或标签拆分云费用。
  2. Chargeback – 将实际成本分配到各团队预算,使超支直接由团队负责。
  3. FinOps Council – 组建跨职能小组(工程、财务、产品),审查支出、制定预算并完善政策。
  4. 教育与培训 – 定期开展云定价、成本效益架构模式和标签标准的研讨会。

预期收益

收益描述
透明度团队能够几乎实时看到其决策的财务影响。
问责制明确所有权;激励团队进行优化。
持续改进通过定期审查发现新的浪费模式并推动政策更新。

综合运用

阶段操作负责人
1️⃣ 响应式部署 Lambda 清理程序 + Slack 警报。云运维 / SRE
2️⃣ 预防式实施 Sentinel/OPA 策略和 SCP。平台工程
3️⃣ 文化层面推出展示/费用回收仪表盘,组建 FinOps 委员会,开展培训。财务 + 工程领导层

底线: 先从快速获胜(清理脚本)入手,阻止眼前的浪费;随后通过策略即代码锁定资源供应;最后将财务责任嵌入组织基因。这个三层方法让你从“灭火”转向“财务智能的云工程”。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringLike": {
          "ec2:InstanceType": [
            "p4d.*",
            "p3.*",
            "g5.*",
            "x2iezn.*",
            "u-12tb1.metal"
          ]
        }
      }
    }
  ]
}

方法概览

方法工作量实施时间长期影响
1. 清理脚本低(响应式)
2. 策略与防护栏高(主动)
3. 组织变革月/季度变革性

最终,成熟的 FinOps 实践会结合以上三者:

  • 清理脚本 用于处理遗漏的资源。
  • 防护栏 用于防止大多数问题。
  • 文化所有权 使每个人都成为云资源的负责管家。

停止追逐意外账单,开始构建一个让财务责任成为最小阻力路径的平台。

👉 阅读原文于 TechResolve.blog
支持我的工作 – 如果本文对您有帮助,您可以请我喝咖啡:👉

0 浏览
Back to Blog

相关文章

阅读更多 »