在 DevSpace 里一句话问出 FunctionGraph 最小云函数:新手上手的三个要点
写在前面
2026-11-14,我在 AI 开发者空间(体验版)新建了一个 AI Shell 会话,只问了一句话:"请用一句话介绍华为云 FunctionGraph 的适用场景,并给一个最小的 Node.js 云函数示例。"不到一分钟,AI 就给出了可直接落地的回答。本文把这次真实问答整理成新手上手的三个要点,代码可直接在 FunctionGraph 控制台测试。
一、FunctionGraph 是什么,一句话说清
FunctionGraph 是华为云的 Serverless 函数计算服务,适用于事件驱动、短时突发、按需扩缩的场景,比如 HTTP API 后端、OBS 上传触发处理、定时任务(Cron)、IoT 消息过滤、日志 ETL 等。开发者只写函数逻辑、不管服务器,按调用次数和执行时长计费。
新手要先建立一个观念:函数不是一直运行的服务,而是"有事件才触发、执行完就释放"的一段代码。想清楚你的触发源是什么,函数就完成了一半。
二、最小的 Node.js 云函数长这样
下面是 AI 给出的最小示例(入口文件 index.js),我按回答原样整理:
// 入口函数:handler 是 FunctionGraph 约定的入口点
// event —— 触发事件的数据(HTTP 请求体、OBS 事件、定时器 payload 等)
// context —— 运行时上下文,提供日志器等能力
exports.handler = async (event, context) => {
context.logger.info('收到事件:' + JSON.stringify(event));
// 返回给 APIG 的响应,可直接作为 HTTP 响应返回给调用方
return {
statusCode: 200,
body: JSON.stringify({
message: 'Hello, FunctionGraph!',
input: event
})
};
};
| 部分 | 作用 |
|---|---|
| exports.handler | FunctionGraph 的入口约定,函数名 handler 需与控制台配置的"处理程序"一致(填 index.handler,index 是文件名,handler 是导出名) |
| event | 触发源传入的数据:APIG(HTTP)触发时是请求体;OBS 触发时是桶/对象信息;TIMER 触发时是 Cron 的 payload |
| context.logger | 运行时提供的日志器,输出到 FunctionGraph 日志页,比 console.log 更便于检索 |
| return | 返回结构体。HTTP 触发时需含 statusCode + body;其他触发源可直接返回任意 JSON |
三、新手最容易踩的三个坑
1. 入口名要和控制台配置对上
处理程序填 index.handler,文件名和导出名都要一致,改了函数名却忘了改配置,是新手最常见的"函数找不到入口"原因。
2. 触发源不同,event 的内容完全不同
不要假设 event 一定是 HTTP 请求体。接 APIG 时它是请求体,接 OBS 时它是桶和对象信息,接定时器时它是 Cron 的 payload。写函数前先确认触发源,再按对应的结构解析 event。
3. 首次调用 504,多半是冷启动,不是代码错了
今天我同步读了鸿蒙实践中心"云同步待办清单"案例的排障记录:挂 VPC 的函数冷启动约 6 秒,而 APIG 后端超时默认只有 5000 毫秒,首次调用报 504 属于正常现象,重试 2–5 次即恢复。经验值是函数超时调到 30 秒、APIG 后端超时调到 30000 毫秒(单位是毫秒),不要照抄无 VPC 场景的 5000 毫秒示例。
部署只要两步
控制台方式:新建函数 → 选 Node.js 运行时 → 把上面代码粘进在线编辑器 → 保存 → 点"测试"即可。想纳入 IaC 管理,也可以用 Terraform / CLI 部署。
小结
一句话提问能拿到可用的最小示例,但真正上手还要过三关:入口约定、event 结构、冷启动超时。把这三点记下来,第一次写 FunctionGraph 就能少走很多弯路。
另外提醒一句:DevSpace 体验版容器环境 3 小时后会释放,再次启动会创建全新容器,重要的文档和代码要及时保存到本地。
- 点赞
- 收藏
- 关注作者
评论(0)