无服务器(Serverless)已从"未来趋势"变成"日常可选"。

过去,后端开发往往意味着租服务器、配置操作系统、部署容器、维护负载均衡、监控、备份。这些都耗时耗力,还容易出错。
现在,Serverless 架构把这些繁琐的基础设施工作交给云厂商来做:只要写函数"写完就丢上去"(Deploy),自动伸缩、按需计费、维护压力几乎是零。
典型场景包括:
- 快速搭一个公开 API(例如让前端调用,或让外部服务 Webhook 回调)
- 写一个定时任务(cron),如每天清理一下临时文件/数据库中的旧数据/生成报告
- 为内网提供内部工具接口/自动化脚本
这些场景过去要自己开服务器、配置 cron、设置反向代理、监控负载、处理故障,而现在只要写个 Lambda 函数 + API Gateway + IAM 权限,就能搞定。传送门
技术切入:Amazon Lambda 的玩法
下面是一个实战范例:用 Python 写一个 Lambda + API Gateway 的公开 API,处理 POST 请求并返回 JSON。
rust
User(请求者) -----> API Gateway -----> Amaozn Lambda 函数 -----> 返回 JSON
假设要做一个简单工具:输入两个数字,返回它们的和 + 差 + 积 +商。
Lambda 函数(Python)
python
# 文件:lambda_function.py
def handler(event, context):
"""
接收 API Gateway Proxy 事件 (HTTP POST),body 是 JSON,
例: { "a": 10, "b": 3 }
返回: { "sum": 13, "diff": 7, "prod": 30, "quot": 3.3333 }
"""
import json
try:
body = json.loads(event.get("body", "{}"))
a = float(body.get("a", 0))
b = float(body.get("b", 0))
except Exception as e:
return {
"statusCode": 400,
"body": json.dumps({"error": "invalid JSON or missing fields", "details": str(e)})
}
result = {
"sum": a + b,
"diff": a - b,
"prod": a * b,
"quot": (a / b) if b != 0 else None
}
return {
"statusCode": 200,
"body": json.dumps(result)
}
部署步骤(手动 + IaC)
你可以通过亚马逊云科技控制台,也可以用 Amazon SAM / Serverless Framework / CDK 来部署。这里以 A mazon CLI + SAM 模板 为例。SAM 模板示例(template.yaml
)
less
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 简单计算器 API
Resources:
CalcFunction:
Type: AWS::Serverless::Function
Properties:
Handler: lambda_function.handler
Runtime: python3.10
MemorySize: 128
Timeout: 10
Events:
ApiProxy:
Type: Api
Properties:
Path: /calc
Method: post
部署流程:
- 安装 Amazon CLI / SAM CLI,并配置好凭证
- 在项目目录放
lambda_function.py
+template.yaml
- 运行:
css
sam build
sam deploy --guided
- SAM 会帮你创建 Lambda + API Gateway + IAM 角色等,最终会给一个 URL,比如
https://xyz.execute-api.us-east-1.amazonaws.com/Prod/calc
- 旧版 Free Tier 的痛点
虽然亚马逊云科技一直有 Free Tier,但使用中有不少困扰:
- 免费额度很分散(Lambda 的调用次数、API Gateway 的流量、数据传出入、日志记录等),新手常常没看清哪个收费项超限,就被"意外扣费"吓得不敢用。
- 测试频繁 + 多次部署 → 很快超过免费调用次数或带宽限制
- 对于一个小型 API + Webhook +定时任务组合,多项收费项叠加,新人觉得"写函数"这件事有时候成本并不低。
所以很多人虽想用 Serverless,但总是在"怕掉坑"的状态 ------ 写了几个函数就停了,或者一直只是读文档没动手。
- Free Tier 2.0 的改善
好消息是:亚马逊云科技的 Free Tier 2.0 带来不少新东西,特别适合刚入门或者想快速验证想法的人。
- 注册就能拿一个"起步奖励"(比如 100 美元抵扣金),完成特定任务最多能拿到 200 美元的抵扣金。
- 在任务清单里包含部署一个带 URL 的 Lambda 函数 + API Gateway,这意味着你只要完成这个任务,就能获得额外抵扣,使你可以安心写函数、不怕因为少量调用被扣费。
- Free Tier 2.0 在"新人期"一般设有一个保护期(例如 6 个月),在这个期间如果你只在任务+免费额度内使用,不会被误扣费。这样你可以大胆试错、写函数、部署 Webhook、做 MVP,而不会因费用问题退缩。
实战扩展
除了最常见的"写一个 API 接口",Serverless 的另一个经典玩法就是做 Webhook 接收器。场景很多:

- GitHub 仓库有 Push / PR / Issue 更新时,触发一个 Lambda 来同步到你自己的数据库、或者发到钉钉/Slack 群里。
- 微信公众平台事件(用户关注、发送消息),直接调用 Lambda,自动回复欢迎语,或者把用户信息存入 DynamoDB。
- 第三方支付平台的支付回调,也可以直接打到 API Gateway → Lambda,完成订单状态更新。
java
GitHub / 微信 / 第三方服务
↓ 触发 Webhook
API Gateway (HTTP POST)
↓
Lambda 函数
↓
DynamoDB / S3 / 通知服务
以下示例:接收 GitHub Webhook,解析 JSON payload,并把信息打印(或者写入 DynamoDB)。
python
import json
import base64
def handler(event, context):
"""
接收 GitHub Webhook (API Gateway Proxy Event)
"""
try:
body = event.get("body", "")
# GitHub 默认 Content-Type: application/json
payload = json.loads(body)
repo = payload.get("repository", {}).get("full_name", "unknown")
pusher = payload.get("pusher", {}).get("name", "unknown")
commit_msg = payload.get("head_commit", {}).get("message", "")
result = {
"repo": repo,
"pusher": pusher,
"commit_message": commit_msg
}
# TODO: 这里可以扩展成写 DynamoDB / 发通知 / 存 S3
print("Webhook received:", result)
return {
"statusCode": 200,
"body": json.dumps({"ok": True, "result": result})
}
except Exception as e:
return {
"statusCode": 400,
"body": json.dumps({"error": str(e)})
}
-
API Gateway:
- 创建一个 POST /webhook 路由。
- 确保"接收原始 body"模式(不要自动转义或重写)。
-
安全性:
- GitHub 提供
X-Hub-Signature-256
签名,你可以在 Lambda 校验secret
。 - 微信公众平台回调有
signature
、timestamp
、nonce
参数,也要在 Lambda 校验。
- GitHub 提供
-
存储 & 自动化:
- 把回调数据存到 DynamoDB 或 S3,便于后续统计和查询。
- 配合 EventBridge + SNS,可以直接"转发"这些事件到邮件 / 短信 / IM 群。
Webhook 接收器的调用模式非常不稳定:有时一天几十次,有时几分钟就上百次。传统服务器要么长期空跑(浪费资源),要么高峰被打爆。
Lambda + API Gateway 就完美解决:按调用计费 ,没有请求时 0 成本。秒级伸缩,GitHub 或微信突然发来一堆事件也不会崩。
所以,如果说"Lambda + API Gateway"最适合的 Hello World 是 Calculator API。
结论
现在是尝试 Serverless 架构的黄金开端:不用担心自己要买服务器、配置环境、规模扩容,只要写函数 + 配置触发 + 接入 API Gateway,就能弄一个稳定、可用的后端接口。
👉 如果你之前因为"怕被扣钱""怕部署麻烦"而没动手,现在就去注册 亚马逊云科技账号→ 激活 Free Tier 2.0 → 写一个简单函数 + API Gateway 测试接口。
你的第一个 Serverless 后端,不仅可能就在今天起跑,还可能成为你未来工具 /后台服务 /SaaS 功能模块的基础。
以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~