4、第一个 Serverless 函数:使用阿里云函数计算创建并部署一个 Hello World 函数,理解触发器和基础配置
好,咱们正式开始动手了。
前面聊了那么多概念和架构,说实话,不亲手敲一个函数跑起来,总觉得心里没底。我个人习惯是,学任何新技术,先让一个最简单的例子跑通,再慢慢往里填东西。今天我们就用阿里云函数计算(FC),搞一个 Hello World 函数出来。
4.1 准备工作:你需要什么?
别慌,东西不多。你只需要:
- 一个阿里云账号(实名认证过的)
- 开通函数计算服务(在控制台搜一下“函数计算 FC”就行)
- 一点点耐心(嗯,这个最重要)
我记得第一次用 FC 的时候,光找入口就花了五分钟。现在方便多了,直接在搜索框里打“函数计算”就能跳转。
4.2 创建第一个函数:Hello World
登录控制台后,点击“创建函数”。你会看到几个选项:
- 事件函数:最常用,处理 HTTP 请求或事件触发
- HTTP 函数:专门处理 HTTP 请求,自带 URL
- 模板函数:官方预置的一些示例
我们选“事件函数”,运行环境选 Python 3.9(你熟悉哪个就用哪个,Node.js、Java 都行)。
函数名称我建议起得有意义一点,比如 hello-world-demo。别学我当年,起个 test123,后来项目多了根本分不清谁是谁。
创建完成后,你会看到一段默认代码:
# -*- coding: utf-8 -*-
import json
def handler(event, context):
return "Hello, World!"
就这么几行。说白了,这就是一个标准的 Python 函数,接收两个参数:
event:触发事件的数据,比如 HTTP 请求体、OSS 文件信息等context:运行时上下文,包含函数的基本信息,比如超时时间、内存大小等
handler 理解成程序的入口。就像 C 语言的 main 函数一样,FC 会自动调用它。
4.3 配置触发器:让函数能被调用
函数写好了,怎么调用它?这就轮到触发器上场了。
触发器,说白了就是“谁可以叫醒这个函数”。常见的有:
- HTTP 触发器:通过 URL 访问,像调普通 API 一样
- 定时触发器:每天几点几分自动执行
- OSS 触发器:文件上传到 OSS 时触发
- 日志服务触发器:日志写入时触发
我们这次用 HTTP 触发器,因为最直观。在函数详情页找到“触发器管理”,点击“创建触发器”,类型选“HTTP 触发器”。
这里有个坑,我曾经踩过:认证方式。默认是“签名认证”,需要你配 AK/SK 才能调。如果你只是测试,建议选“无需认证”,省得折腾。当然,生产环境千万别这么干。
创建成功后,你会得到一个 URL,类似:
https://xxx.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/hello-world-demo/hello-world-demo/
把这个 URL 复制到浏览器里打开,你就能看到:
Hello, World!
嗯,第一个 Serverless 函数,跑起来了。
4.4 理解基础配置:内存、超时、并发
函数跑通了,但别急着走。咱们看看几个关键配置,这些在生产环境里特别重要。
| 配置项 | 说明 | 我的建议 |
|---|---|---|
| 内存 | 函数运行时可用的最大内存,单位 MB | 测试用 128MB 够了,生产建议 512MB 起步 |
| 超时时间 | 函数最长执行时间,超时会被强制终止 | 默认 3 秒,我一般设 10 秒,避免误杀 |
| 并发实例数 | 同一时刻最多能运行多少个函数实例 | 默认 10,高并发场景要调大,但注意费用 |
| 环境变量 | 运行时可以读取的键值对 | 敏感信息别写死代码里,放这里最安全 |
4.5 避坑指南:我踩过的几个雷
说实话,第一次用 Serverless 的人,十有八九会碰到这些问题:
- 冷启动慢:函数长时间没调用,第一次请求会慢几秒。解决办法是设置“预留实例”,让函数一直热着。
- 日志查不到:函数执行完,去日志服务里查不到。记得在函数配置里开启“日志功能”,并关联一个 Logstore。
- 代码包太大:FC 对代码包大小有限制(压缩后 50MB)。如果你的依赖多,建议用层(Layer)来管理公共依赖。
我曾经因为没开日志,排查一个线上问题花了整整一下午。后来学乖了,每个函数创建完第一件事就是配日志。
4.6 小结:你学到了什么?
这一章我们做了三件事:
- 创建了一个 Hello World 函数
- 配置了 HTTP 触发器,通过 URL 调用它
- 理解了内存、超时、并发等基础配置
说白了,你已经迈出了 Serverless 实战的第一步。别小看这个 Hello World,它背后的流程——创建、配置、触发、调试——和后面所有复杂函数是一样的。
下一章,我们会深入函数的输入输出,看看 event 和 context 里到底藏了什么好东西。
- 触发器是函数的“门铃”,决定了谁来叫醒函数
- 基础配置(内存、超时)直接影响函数的稳定性和费用
- 日志一定要开,不然出问题你连查的地方都没有
好,今天就到这儿。去试试你的第一个函数吧,有问题随时翻翻文档,或者回来看看这一章。