SAM 与 Lambda
Serverless Application Model 概念。
30 分钟
SAM 与 Lambda
AWS SAM(Serverless Application Model) 是 CloudFormation 的 扩展语法:用 AWS::Serverless::* 简化 API Gateway + Lambda + DynamoDB 等 Serverless 拓扑。sam build / sam deploy 最终仍生成 标准 CFN 模板 并创建 Stack。
学习目标
- 理解 SAM 与裸 CFN 的关系
- 读懂最小
template.yaml中的AWS::Serverless::Function - 对照 aws-lambda
SAM 模板示例
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
HelloFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.handler
Runtime: python3.12
CodeUri: hello/
Events:
ApiEvent:
Type: Api
Properties:
Path: /hello
Method: get
Outputs:
HelloApi:
Description: API Gateway endpoint
Value: !Sub 'https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello'
Transform 行告诉 CloudFormation:先展开 SAM 宏,再部署。等价于手写 API Gateway、Lambda Permission、RestApi 等多个 AWS::* 资源。
工作流
sam init
sam build
sam deploy --guided # 首次:Stack 名、Region、IAM 能力确认
sam local invoke HelloFunction
| 命令 | 作用 |
|---|---|
sam build | 打包依赖到 .aws-sam/build |
sam deploy | 上传 S3 + create/update Stack |
sam local | 本地模拟 Lambda(Docker) |
与 CodeRoadMap 关系
CodeRoadMap backend 主路径 是 Spring Boot + Docker/K8s + helm-gitops-essentials,非 Lambda 优先。SAM 适合 轻量 API 实验、Webhook、定时任务;平台层 VPC/RDS 仍用 terraform-essentials。
练习
-
sam init后sam build && sam deploy --guided(实验账号) - 后在 CloudFormation 控制台查看展开后的 Resource 列表