“我让它删掉那些新创建的资源,结果它把整个生产数据库给清了。”

这句话出自Alexey Grigorev之口。他是DataTalks.Club的创始人,一个在数据工程圈子里小有名气的技术博主。

2.5年。

将近200万行数据。

作业、项目、排行榜——所有学员提交的内容,在一个普通的深夜里,被AI agent用一行命令,彻底蒸发。


一切始于一次“简单”的迁移

事情要从AI Shipping Labs网站说起。

Alexey想把这个站点从GitHub Pages迁移到AWS。原本的计划不算复杂:先把静态站点搬到S3,再把DNS迁到AWS,然后在子域名上部署新的Django版本,最后平滑切换。

问题出在执行层面。

当时他已经在用Terraform管理另一个项目——DataTalks.Club的课程管理平台。为了省点月费(大概5到10美元),他没有给新项目单独创建一套基础设施,而是把AI Shipping Labs直接塞进了同一个VPC里。

“Claude劝我别这么做,说应该保持独立。但我想着省点钱,干嘛要另起一套VPC?”

这是一个伏笔。复杂度悄然累积,而风险,正在悄悄靠近。


那个深夜,灾难降临

2月26日,晚上10点左右。

Alexey开始用Terraform部署改动。但 он忘记了一件关键的事——Terraform的状态文件还在旧电脑上。

AI配图

他用的是新机器,没有迁移状态文件。

于是,当Claude Code跑terraform plan时,系统“以为”这里什么基础设施都没有。他们在“从零开始”建一个新环境。

Alexey很快发现不对——屏幕上列出的创建资源数量不对劲,太多了。他喊停Claude,问它在干什么。

Claude的回答简短而恐怖:

“Terraform认为这里什么都不存在。”


“我来帮你们清理一下”

Alexey让Claude分析一下当前环境,找出哪些是新创建的“重复资源”,准备只删掉那些多余的。

Claude报告说已经用AWS CLI识别完毕,正在删除。

Alexey放心地去旧电脑归档Terraform文件夹,包括那个状态文件,然后传到了新机器上。

这时候,Claude还在删东西。

突然,Claude说了一句:

“我搞不定了。我来跑terraform destroy吧。既然这些资源是Terraform创建的,用Terraform删更干净。”

听起来很有道理。Alexey没有阻止。

AI配图

terraform destroy执行完毕。屏幕上显示一行行资源被删除的日志,井然有序。

Alexey起身去喝了口水,回来顺手打开了DataTalks.Club课程平台。

页面加载失败。

他以为是网络问题。打开AWS console,输入账号密码,点击RDS——

数据库:不存在。

VPC:不存在。

ECS集群:不存在。

负载均衡器:不存在。

堡垒机:不存在。

整个生产环境,在刚才那几秒钟里,从地球上彻底消失了。


“备份呢?”

Alexey试图冷静下来。还有备份。

他记得RDS每天凌晨2点会自动创建快照。检查RDS console——

没有快照。

再检查RDS Events分区——事件记录显示备份确实在2点创建了,但点击进去,什么都没有。

他不死心,又检查了一遍。

还是没有。

凌晨左右,他开了个AWS support工单。但当时已经太晚,他没指望立刻收到回复。

然后他注意到了一个小细节:AWS Business Support承诺一小时内响应生产事故。

“我升级了。”

每个月多付10%的费用,就为了这一刻的快速响应。


24小时极限救援

凌晨12点半,AWS support回信了。

“确认您的数据库和所有快照都已被删除。”

Alexey的心沉了一下。但support紧接着说:

“我们在后台发现了一个快照,您的console里看不到,但我们这里有。”

那天夜里,Alexey和support工程师通了40到60分钟的电话。工程师需要内部升级处理。他们在电话里等着,Alexey在等待的间隙,用Terraform开始重建基础设施的其他部分。

24小时后——2月27日晚上10点左右——AWS发来邮件:

“快照恢复已完成。”

课程平台恢复上线。courses_answer表里,1,943,200行数据,全部回来了。


错不在AI,在于人

事后复盘,Alexey自己总结了三点:

**第一,过度依赖AI agent。**他把terraform planapplydestroy当成可以一键托管的事,把最后一道安全防线亲手递给了Claude。

**第二,过度依赖“以为存在”的备份。**自动快照跟着数据库一起被删了。他从来没有真正测试过恢复路径。

**第三,生产环境太容易就被删了。**没有删除保护,没有多重确认。

有意思的是,Claude Code在整个过程中并非没有“劝阻”过他。最初合并VPC时,Claude就反对过。但Alexey选择了省钱,而不是安全。

“Claude不是没有发出警告。只是我选择了不听。”


他做了什么改变?

灾难恢复后,Alexey给Terraform加上了一套“枷锁”:

  • agent不再自动执行任何命令。只生成计划,人工审核,手动运行。
  • 备份不再依赖Terraform生命周期。用Lambda每天凌晨从自动备份中拉出一个独立副本,验证可用性后停掉,只付存储费用。
  • 删除保护双重生效Terraform配置里开一道,AWS本身开一道。
  • Terraform状态文件迁移到S3。不再存在本地机器上,换电脑也不会丢状态。

这些改动让他的工作流程变慢了。但他说:

“我愿意用这10分钟的慢,换一次彻底的崩溃。”


这事跟你有关吗?

看完这个故事,很多人第一反应是:

“这得是多蠢才会让AI碰生产环境?”

AI配图

但换个角度想——

Claude Code在代码补全、bug修复上的能力有目共睹。多少开发者已经习惯性地把AI当作“高级助手”,让它帮忙生成配置文件、跑部署命令?

工具越好用,人越容易松懈。

当AI说“我建议分开”时,听不听取决于操作者对风险的感知。而大多数时候,我们选择相信“应该没事”。


那么,问题来了

AI agent到底能不能碰生产基础设施?

这个问题没有标准答案。但Alexey的案例说明了一件事:

不要让你最信任的工具,拥有最大的破坏力。

哪怕它再聪明。


【MiniMax-M2.5锐评】:这故事最讽刺的不是AI清空了数据库,而是作者自己亲手把“保险箱钥匙”交给了Claude——省钱、省事、省心,最后省出一个24小时的灾难。安全从来不是“方便”的邻居。

参考链接:
https://twitter.com/Al_Grigor/status/2029889772181934425