一、为什么突然想测这个?
上个月公司要做一个小功能,就是把用户提交的反馈转存到表格里,触发频率很低,一天也就几十次。运维建议用云函数(Serverless),按调用付费,不用养服务器。我当时觉得靠谱,就让新来的同事去调研选哪家。结果他忙活了一周,给我交了一份对比表,洋洋洒洒十几页,什么并发上限、超时时间、冷启动次数……我看了五分钟就看不下去了,因为全是厂商文档里抄的,没一句是自己跑过的。
我把他叫过来,说你直接给我写个Hello World,在每个平台上跑一遍,告诉我从点“创建”到看到输出,中间你遇到了什么,花了多长时间,一共要过几个步骤。他说好,然后真的去做了。后来他把结果发给我,我又在周末用自己的账号复测了一遍,把整个过程记了下来。
这篇文章就是我复测后的实录,不是广告,不是评测机构的报告,就是我自己注册、配置、部署、调用的真实经过。如果你也在选云函数,或许能帮你省掉一些我踩过的坑。
二、测试说明:我就测三件事
我用同一个Python脚本,def main(): return "Hello, World!",在每个平台上创建HTTP触发的函数。测三样东西:
第一,从注册到第一次成功调用,总共要操作多少步,花了多久——这决定新手上手难度。第二,冷启动延迟——就是函数闲置一段时间后再调用的响应时间,我连续测10次取中位数。第三,费用——每月免费额度能用多少,超出后单价多少。
我选的六家:AWS Lambda(海外)、阿里云函数计算、腾讯云函数、华为云FunctionGraph、Azure Functions(海外)、Google Cloud Functions(海外)。国内国外都覆盖一下。
三、逐一实录:每家都有让我想摔键盘的瞬间
先说说阿里云函数计算。我本来对国内云挺有信心的,毕竟用阿里云好几年了。但这次创建函数时,默认模板居然不是Python 3.10,而是Node.js,我找了半天才在“运行时”下拉框里切到Python。然后它的触发器配置有点绕,要先创建函数,再单独绑定HTTP触发器,再配路径和方法。我绑定完又去配了环境变量,其实这步根本没必要,但文档里写得不清不楚。
从开始创建到第一次curl返回“Hello World”,我花了9分钟。冷启动我测了三次,平均在180ms左右,算不错。免费额度是每月100万次调用,对个人小项目完全够。缺点是管理界面稍显复杂,新手容易迷路。
腾讯云函数给我的第一感觉是界面清爽,创建函数时可以直接选“Hello World”模板,省了点代码的功夫。触发器的配置也比阿里云直观,一个“API网关”选项点一下就挂好了。但问题出在“公网访问”上——默认是关闭的,我一开始没留意,部署完用Postman调用一直超时,查了十分钟才发现要去VPC里放通。打开之后立马通了。从开始到成功调用6分钟,比阿里云快一些。冷启动平均210ms,比阿里云略高,但差异不大。免费额度同样是每月100万次,价格基本持平。
华为云FunctionGraph让我有点崩溃。它的控制台默认选项特别多,“函数类型”里有什么“事件函数”“HTTP函数”,我选了HTTP函数,又让我选“区域”“可用区”。创建完之后,它的代码编辑器在网页底部,默认显示的是配置文件,我找了半天才找到真正的代码编辑框。最坑的是,它不自动生成触发URL,你得手动去“触发器”页面里复制一个类似https://xxx.apigw.xxx.com/function的地址,而且这个地址默认加了路径后缀,我复制粘贴时多了一个斜杠,导致404,排查了五分钟。从开始到成功调用耗时14分钟。冷启动表现还行,190ms左右。免费额度每月100万次,费用中等。但说实话,那个界面设计对新手不太友好,我算熟手都觉得绕。
AWS Lambda我比较熟,但这次为了公平,我用了新账号重头走一遍。它的创建流程很简洁,选Python 3.10,选“创建一个新函数”,代码直接在线编辑,然后点击“部署”。但难点在于配置HTTP触发器,它得通过API Gateway暴露。我配置API Gateway时选了“REST API”,然后要创建资源和方法,再部署到某个stage,最后才能拿到一个带/prod/xxx的URL。这一串操作下来,我记了11分钟。好在AWS的冷启动做得不错,我测到的中位数是120ms,六家里最快。免费额度是每月100万次请求和400000 GB-s的计算时间,小型个人项目够用。但海外访问延迟稍高,国内用户调用会有网络开销。
Azure Functions我用的是国际版,创建时选了Python栈,它会自动生成一个HTTP触发的模板,默认代码就是return "Hello, World!"。Azure的界面偏“工程化”,左侧菜单很多,但创建向导还算清晰。唯一让我卡住的是,它默认要求我创建存储账户才能部署,否则不让继续。我只好又去新建一个存储账户,花了三分钟。从创建到成功调用耗时10分钟。冷启动中位数是250ms,六家里最慢,但也在可接受范围。免费额度是每月100万次请求,和AWS类似。Azure的文档非常详细,但过于啰嗦,找关键信息要多翻几页。
Google Cloud Functions是我用得最少的一家,这次重新注册账号还卡在绑信用卡环节,折腾了十分钟。创建函数时它默认选“allow unauthenticated”,这个勾默认没打,我第一次没注意,部署完后访问直接返回403。改完权限后才通。它的代码编辑器是内嵌的,可以直接运行测试,很顺手。从开始到成功调用耗时12分钟(主要花在绑卡上)。冷启动平均160ms,比AWS慢点但比Azure快。免费额度是每月200万次调用,六家里最大方。不过Google Cloud在国内访问时好时坏,这一点比较头疼。
四、我整理了一张表,方便你直接看
| 平台 | 上手耗时(min) | 冷启动延迟(ms) | 月免费调用次数 | 最大槽点 |
|---|---|---|---|---|
| 阿里云 | 9 | 180 | 100万 | 触发器配置绕 |
| 腾讯云 | 6 | 210 | 100万 | 默认关闭公网访问 |
| 华为云 | 14 | 190 | 100万 | 界面复杂,URL易错 |
| AWS Lambda | 11 | 120 | 100万 | API Gateway配置繁琐 |
| Azure | 10 | 250 | 100万 | 强制建存储账户 |
| Google Cloud | 12 | 160 | 200万 | 国内访问不稳定 |
五、我的个人结论
如果你在国内用,优先选腾讯云和阿里云。腾讯上手最快,阿里性能最好,价格没本质区别。华为云功能不差,但操作步骤多,新手慎入。
如果你海外用或者不在乎延迟,Google Cloud的免费额度最香,AWS的冷启动最快,Azure中规中矩但大厂背书稳。不过我提醒一下,所有平台都有“冷启动”惩罚,如果你的函数几小时没人调,第一次请求都会多等一两百毫秒。如果你做的是用户实时交互,最好用预留实例或定时保活。
最后说句实在话,我测完一圈最大的收获不是数据,而是发现各家文档里的“快速开始”都标榜自己简单,但实际走一遍全都有暗坑。你只有亲手跑一个Hello World,才知道哪个平台的流程跟你的习惯合拍。就像买鞋,尺码表再详细,不如上脚走两步。希望这篇实测能帮你少走几步弯路。
