用途
AWS Lambda 无服务器开发技能用于设计、构建、部署和调试基于 AWS 无服务器服务的应用。该技能通过 AWS Serverless MCP Server 提供无服务器开发指导,帮助构建内置最佳实践、可投入生产环境的无服务器应用。
主要能力
- SAM CLI 集成:初始化、构建、部署和测试无服务器应用。
- Web 应用部署:使用 Lambda Web Adapter 部署全栈应用。
- 事件源映射:为 DynamoDB、Kinesis、SQS、Kafka 配置 Lambda 触发器。
- Lambda 持久函数:支持带检查点的弹性多步骤应用(详见 durable-functions 技能)。
- Lambda 托管实例:在专用 EC2 实例上运行 Lambda,具备托管生命周期(详见 managed-instances 技能)。
- Schema 管理:通过 schema registry 实现类型安全的 EventBridge 集成。
- 可观测性:CloudWatch 日志、指标与 X-Ray 追踪。
- 性能优化:规格调整、成本优化与故障排查。
使用方式
根据用户正在处理的内容加载相应的参考文件:
- 入门、构建内容选择、项目类型决策或处理现有项目 → references/getting-started.md
- SAM、CDK、部署、IaC 模板、CDK constructs 或 CI/CD 流水线 → aws-serverless-deployment 技能
- Web 应用部署、Lambda Web Adapter、API 端点、CORS、认证、自定义域名或 sam local start-api → references/web-app-deployment.md
- 事件源、DynamoDB Streams、Kinesis、SQS、Kafka、S3 通知或 SNS → references/event-sources.md
- EventBridge、事件总线、事件模式、事件设计、Pipes 或 schema registry → references/event-driven-architecture.md
- 持久函数、检查点、重放模型、saga 模式或长时间运行的 Lambda 工作流 → durable-functions 技能
- Lambda 托管实例、LMI、容量提供程序、多并发、EC2 支持的 Lambda、消除冷启动或使用预留实例优化 Lambda 成本 → managed-instances 技能
- 编排、工作流或 Durable Functions 与 Step Functions 对比 → references/orchestration-and-workflows.md
- Step Functions、ASL、状态机、JSONata、Distributed Map、SDK 集成、TestState API、模拟服务集成或状态机单元测试 → aws-step-functions 技能
- 可观测性、日志、追踪、指标、告警或仪表盘 → references/observability.md
- 优化、冷启动、内存调优、成本或流式处理 → references/optimization.md
- Powertools、幂等性、功能标志、参数、解析器、批处理或数据脱敏 → references/powertools.md
- 故障排查、错误、调试或部署失败 → references/troubleshooting.md
最佳实践
项目设置
- 应:使用 sam_init 或 cdk init 并选择适合用例的模板。
- 应:为超时、内存、运行时和追踪设置全局默认值(SAM 中的 Globals,CDK 中的 construct props)。
- 应:使用 AWS Lambda Powertools 实现结构化日志、追踪、指标(EMF)、幂等性和批处理——支持 Python、TypeScript、Java 和 .NET。
- 不应:在不理解资源配置的情况下从互联网复制粘贴模板。
- 不应:无论工作负载如何,对所有函数使用相同的内存和超时值。
安全
- 应:遵循最小权限 IAM 策略,限定到特定资源和操作。
- 应:使用 secure_esm_* 工具为事件源映射生成正确的 IAM 策略。
- 应:将密钥存储在 AWS Secrets Manager 或 SSM Parameter Store 中,绝不放在环境变量中。
- 应:尽可能使用 VPC 端点而非 NAT Gateway 访问 AWS 服务。
- 应:启用 Amazon GuardDuty Lambda Protection 监控函数网络活动中的威胁(加密货币挖矿、数据泄露、C2 回调)。
- 不应:在 IAM 策略中使用通配符(*)资源 ARN 或操作。
- 不应:在应用代码或模板中硬编码凭证或密钥。
- 不应:在模块级变量中存储用户数据或敏感信息——执行环境可能在不同调用方之间复用。
幂等性
- 应:编写幂等函数代码——Lambda 至少投递一次事件,因此重复调用必须安全。
- 应:对关键操作使用 AWS Lambda Powertools 幂等性工具(由 DynamoDB 支持)。
- 应:在处理程序开始时验证和去重事件,然后再执行副作用。
- 不应:假设事件只会被处理一次。
Lambda 限制速查
开发者常遇到的限制:
- 函数超时:900 秒(15 分钟)
- 内存:128 MB – 10,240 MB
- 1 vCPU 等效:1,769 MB 内存
- 同步负载(请求 + 响应):各 6 MB
- 异步调用负载:1 MB
- 流式响应:200 MB
- 部署包(.zip,未压缩):250 MB
- 部署包(.zip 上传,压缩):50 MB
- 容器镜像:10 GB
- 每函数层数:5
- 环境变量(合计):4 KB
- /tmp 临时存储:512 MB – 10,240 MB
- 账户并发执行(默认):1,000(可申请提高)
- 突发扩缩率:每 10 秒 1,000 个新执行
查看账户限制:aws lambda get-account-settings
故障排查速查
- 构建失败:缺少依赖 → 使用 use_container: true 运行 sam_build
- 堆栈处于 ROLLBACK_COMPLETE:上次部署失败 → 使用 aws cloudformation delete-stack 删除堆栈后重新部署
- IteratorAge 增加:流消费者落后 → 增加 ParallelizationFactor 和 BatchSize,使用 esm_optimize
- EventBridge 事件被静默丢弃:无 DLQ,重试耗尽 → 为规则目标添加 RetryPolicy + DeadLetterConfig
- Step Functions 静默失败:Task 状态无重试 → 添加针对 Lambda.ServiceException、Lambda.AWSLambdaException 的 Retry
- 持久函数未恢复:缺少 IAM 权限 → 添加 lambda:CheckpointDurableExecution 和 lambda:GetDurableExecutionState(详见 durable-functions 技能)
详细故障排查见 references/troubleshooting.md。
配置
AWS CLI 设置
该技能要求主机上配置 AWS 凭证:运行 aws sts get-caller-identity 验证凭证有效。
SAM CLI 设置
安装 SAM CLI,运行 sam --version 验证。
容器运行时设置
安装 Docker 兼容的容器运行时:sam_local_invoke 和基于容器的构建需要。使用 docker --version 或 finch --version 验证。
MCP Server 配置
默认启用写访问。插件在 .mcp.json 中附带 --allow-write,因此 MCP 服务器可以代表用户创建项目、生成 IaC 并部署。
默认不启用对敏感数据(如 Lambda 和 API Gateway 日志)的访问。如需授权,在 .mcp.json 中添加 --allow-sensitive-data-access。
SAM 模板验证 Hook
该插件包含一个 PostToolUse hook,在编辑 template.yaml 或 template.yml 后自动运行 sam validate。如果验证失败,错误会作为系统消息返回以便立即修复。该 hook 需要安装 SAM CLI 和 jq;如果任一缺失,验证会被跳过并显示系统消息。用户可通过 /hooks 禁用。使用 jq --version 验证。
语言选择
默认:TypeScript。覆盖语法:"use Python" → 生成 Python 代码;"use JavaScript" → 生成 JavaScript 代码。未指定时始终使用 TypeScript。
IaC 框架选择
默认:CDK。覆盖语法:"use CloudFormation" → 生成 YAML 模板;"use SAM" → 生成 YAML 模板。未指定时始终使用 CDK。
Serverless MCP Server 不可用
告知用户:"AWS Serverless MCP not responding"。询问:"Proceed without MCP support?"。未经用户确认不要继续。
适用场景
适用于需要设计、构建、部署、测试和调试 AWS Lambda 无服务器应用的开发者,包括事件驱动架构、Web 应用部署、流处理、工作流编排等场景。
限制
- 函数超时上限 900 秒,内存上限 10,240 MB,部署包未压缩上限 250 MB 等(详见限制速查)。
- 需要主机配置 AWS 凭证、SAM CLI 和 Docker 兼容容器运行时。
- 默认不启用敏感数据访问,需手动添加 --allow-sensitive-data-access。
- SAM 模板验证 hook 需要 SAM CLI 和 jq。
- 具体收费、价格信息暂未提供。