专栏名称: 云头条
云计算领域科技媒体:传播观点,传播价值,连接商业与技术;Web:www.yuntoutiao.com ,欢迎互动~~~
目录
相关文章推荐
新浪科技  ·  【#花旗下调两年iPhone出货量预测#,维 ... ·  昨天  
36氪  ·  又一批抄底大理民宿的人,后悔了 ·  昨天  
新浪科技  ·  【#Manus创始人取消武汉亮相#】市场消息 ... ·  2 天前  
51好读  ›  专栏  ›  云头条

我在 Serverless 方面的惨痛教训

云头条  · 公众号  · 科技媒体  · 2017-08-11 23:50

正文

我在写了一篇介绍无服务器架构使用初体验的文章后,对于总结的心得和取得的成绩还沾沾自喜。然而,次日早晨的遭遇却让我苦不堪言。


度了两周的假期后我在这天早上起来,准备工作。我查了一下邮件和短信,冲了个澡,吃过了早餐――你也知道这是每天的惯例。然后在7点43分,我收到了亚马逊发来的预算通知。这时候,想必诸位已猜到发生了什么。


AWS预算通知邮件


乍一看,费用似乎并不多。预测费用83.28美元,我预料实际总费用大概少5美元。我马上登录到亚马逊控制台,径直进入到计费部分,发现预测费用居然高达800美元,实际费用180美元。我脑袋一时空白,这笔费用对我来说太高了,诸位也许可以从邮件中的预算值中看出来。


我赶紧马上分析日志,找到了自己犯的错误。这是昨天我在撰写博文时发现的一个bug,忘了更改代码就直接部署上去……


我的S3存储桶(S3 bucket)采用了这种设置方式:只要添加新文件,就会触发一个Lambda函数,该函数根据文件类型来确定缓存持续时间,并存储在元数据中。由于对象已被覆盖,它再次触发该事件,因为它被视作一个新的对象――这进而再次触发Lambda函数。是有处理该行为的检查机制,我检查了元数据是否已经在那里;如果在,就会用一个简单的返回语句终结脚本。问题就出在这里;由于重构(refactor),我忘了返回语句,它完全继续再次覆盖。因而形成了无限循环。


我觉得脚本一直在运行,因为在我发表我那篇博文前夕,日志全是关于它的内容。


我觉得这天再糟糕不过了,几小时过后,确实如此。我猜费用定期更新,因为它更新后,费用再次上涨。


AWS费用


实际费用现在是206美元,预测费用超过1000美元,这让我重新考虑将来要不要使用按使用付费的服务。犯了个小小的错误,却花费大笔钱,预算通知来得太晚了,我对此无能为力。


眼下,我不断刷新亚马逊上的计费页面,希望费用不会变得更高――晚上估计是睡不踏实了。


我倒不是说无服务器很坏,而是说你在使用无服务器时要格外小心。你要留意日志,再三测试各个部分。设置预算警报,尽管我最后的费用仍有206美元,但要是没有预算警报,费用会高得多。


为有兴趣的读者提供一些统计数字,你可以清楚地发现S3和Lambda一直非常活跃。







请到「今天看啥」查看全文