本地开发与部署
SAM/Serverless Framework 概览。
25 分钟
本地开发与部署
纯靠控制台点 Lambda 难以 版本化、协作、复现。SAM(Serverless Application Model)与 Serverless Framework 用 模板描述函数 + 事件源 + IAM,支持本地 invoke、打包上传——与 aws-cdk 的「代码定义基础设施」同族,粒度更偏 Lambda 应用。
学习目标
- 读懂 SAM
template.yaml最小结构 - 使用
sam local invoke/sam deploy基本流程 - 了解 Serverless Framework 与 SAM 的分工直觉
SAM 模板骨架
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
HelloFunction:
Type: AWS::Serverless::Function
Properties:
Handler: com.example.Handler::handleRequest
Runtime: java21
MemorySize: 512
Timeout: 10
Events:
Api:
Type: Api
Properties:
Path: /hello
Method: get
Events.Api 同时创建 API Gateway 路由——基础设施与应用一次描述。
本地工作流
sam build # 编译、打 jar
sam local invoke # Docker 模拟 Lambda 环境
sam local start-api # 本地 HTTP 端口映射 API GW
sam deploy --guided # 首次交互式上传 CloudFormation 栈
本地 Docker 需与 运行时版本一致;VPC 内资源(私有 RDS)本地常 连 dev 共用库或 Testcontainers,勿连 prod。
Serverless Framework 简况
| 工具 | 特点 |
|---|---|
| SAM | AWS 官方、CloudFormation 原生 |
| Serverless Framework | 多云插件生态、yaml serverless.yml |
| AWS CDK | 用 Java/TS 写栈,适合函数+网络+多服务一体 |
CodeRoadMap 实验可 SAM 入门 + CDK 进阶;与 aws-vs-tf 的 IaC 思维一致:可 review 的声明优于控制台漂移。
与 Git 协作
- 模板、Handler、迁移脚本 同 repo
- PR 跑单元测试 +
sam validate - 密钥不进 Git:用 SSM/Secrets Manager 参数化
练习
- 初始化最小 SAM 项目,本地 invoke 一次
- 在 template 里加 环境变量引用