关于 aws-lambda
aws-lambda 是面向 AWS Lambda 开发者的技能,通过 AWS Serverless MCP Server 提供无服务器应用开发指导。内容涵盖 SAM CLI、事件源、可观测性、性能优化及部署相关实践。
主要功能
- 01SAM CLI 初始化、构建与测试指导
- 02Lambda Web Adapter Web 应用部署
- 03配置 DynamoDB、Kinesis、SQS 和 Kafka 触发器
- 04EventBridge 模式与架构指导
- 05CloudWatch 与 X-Ray 可观测性指导
- 06性能、成本和故障排查建议
适用场景
- 01构建和部署 Lambda 无服务器应用
- 02为函数配置事件源映射
- 03部署基于 Lambda Web Adapter 的 Web 应用
- 04排查日志、追踪或性能问题
MCP 相关
该技能通过 AWS Serverless MCP Server 提供无服务器开发指导。其配置默认允许写入,可创建项目、生成 IaC 并部署;敏感数据访问默认关闭。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ awslabs/ agent-plugins --skill aws-lambda安装后在 Claude Code 中输入/aws-lambda确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/event-driven-architecture.mdevent-sources.mdgetting-started.mdobservability.mdoptimization.mdorchestration-and-workflows.mdpowertools.mdtroubleshooting.mdweb-app-deployment.md详细介绍
AWS Lambda 无服务器开发
使用 AWS 无服务器服务设计、构建、部署和调试无服务器应用程序。此技能通过 AWS Serverless MCP Server 提供无服务器开发指南,帮助你构建内置最佳实践、可用于生产环境的无服务器应用程序。
使用 SAM CLI 初始化和部署项目,使用 Lambda Web Adapter 构建 Web 应用程序,或使用 Event Source Mappings 构建事件驱动架构。AWS 会自动处理基础设施预置、扩展和监控。
主要功能:
- SAM CLI 集成:初始化、构建、部署和测试无服务器应用程序
- Web 应用程序部署:使用 Lambda Web Adapter 部署全栈应用程序
- Event Source Mappings:为 DynamoDB、Kinesis、SQS、Kafka 配置 Lambda 触发器
- Lambda 持久函数:通过检查点构建具有弹性的多步骤应用程序 — 请参阅 durable-functions skill,了解相关指南
- Lambda 托管实例:在专用 EC2 实例上运行 Lambda,并由 AWS 托管其生命周期 — 请参阅 managed-instances skill,了解评估、配置和迁移指南
- 架构管理:通过架构注册表实现类型安全的 EventBridge 集成
- 可观测性:CloudWatch 日志、指标和 X-Ray 跟踪
- 性能优化:调整实例规格、优化成本和排查问题
何时加载参考文件
根据用户正在处理的内容加载相应的参考文件:
- 入门、要构建什么、项目类型决策或使用现有项目 -> 请参阅 references/getting-started.md
- SAM、CDK、部署、IaC 模板、CDK 构造或 CI/CD 流水线 -> 请参阅 aws-serverless-deployment skill(此插件中的独立 skill)
- 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或架构注册表 -> 请参阅 references/event-driven-architecture.md
- 持久函数、检查点、重放模型、Saga 模式或长时间运行的 Lambda 工作流 -> 请参阅 durable-functions skill(此插件中的独立 skill,包含完整的 SDK 参考、测试和部署指南)
- Lambda Managed Instances、LMI、容量提供方、多并发、由 EC2 支持的 Lambda、消除冷启动或使用预留实例优化 Lambda 成本 -> 请参阅 managed-instances skill(此插件中的独立 skill,适用于评估、配置和迁移)
- 编排、工作流或 Durable Functions 与 Step Functions 的对比 -> 请参阅 references/orchestration-and-workflows.md
- Step Functions、ASL、状态机、JSONata、分布式 Map、SDK 集成、TestState API、模拟服务集成或状态机单元测试 -> 请参阅 aws-step-functions skill 获取全面的指导
- 可观测性、日志记录、跟踪、指标、警报或仪表板 -> 请参阅 references/observability.md
- 优化、冷启动、内存调优、成本或流式处理 -> 请参阅 references/optimization.md
- Powertools、幂等性、功能标志、参数、解析器、批处理或数据脱敏 -> 请参阅 references/powertools.md
- 故障排查、错误、调试或部署失败 -> 请参阅 references/troubleshooting.md
最佳实践
项目设置
- 应做:根据使用场景,使用
sam_init或cdk init和合适的模板 - 应做:设置超时、内存、运行时和跟踪的全局默认值(SAM 中的
Globals,CDK 中的构造属性) - 应做:使用 AWS Lambda Powertools 实现结构化日志记录、跟踪、指标(EMF)、幂等性和批处理——支持 Python、TypeScript、Java 和 .NET
- 不应做:在不了解资源配置的情况下,从网上复制粘贴模板
- 不应做:不考虑工作负载,为所有函数使用相同的内存和超时值
安全
- 应做:遵循最小权限 IAM 策略,并将权限限定于特定资源和操作
- 应做:使用
secure_esm_*工具为事件源映射生成正确的 IAM 策略 - 应做:将密钥存储在 AWS Secrets Manager 或 SSM Parameter Store 中,切勿存储在环境变量中
- 应做:尽可能使用 VPC 端点,而非 NAT 网关访问 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 次执行 |
使用 Service Quotas 检查账户限额:aws lambda get-account-settings
故障排查速查表
| 错误 | 原因 | 解决方案 |
|---|---|---|
Build Failed | 缺少依赖 | 使用 use_container: true 运行 sam_build |
Stack is in ROLLBACK_COMPLETE | 上一次部署失败 | 使用 aws cloudformation delete-stack 删除堆栈,然后重新部署 |
IteratorAge 持续增加 | 流消费者处理速度跟不上 | 增加 ParallelizationFactor 和 BatchSize。使用 esm_optimize |
| EventBridge 事件被静默丢弃 | 没有 DLQ,重试次数已耗尽 | 为规则目标添加 RetryPolicy + DeadLetterConfig |
| Step Functions 静默失败 | Task 状态没有重试 | 添加包含 Lambda.ServiceException、Lambda.AWSLambdaException 的 Retry |
| Durable Function 未恢复运行 | 缺少 IAM 权限 | 添加 lambda:CheckpointDurableExecution 和 lambda:GetDurableExecutionState — 参见 durable-functions skill |
详细的故障排查信息,请参见 references/troubleshooting.md。
配置
AWS CLI 设置
此 skill 要求在主机上配置 AWS 凭证:
验证访问权限:运行 aws sts get-caller-identity,确认凭证有效
SAM CLI 设置
- 安装 SAM CLI:按照 SAM CLI 安装指南 操作
- 验证:运行
sam --version
容器运行时设置
- 安装兼容 Docker 的容器运行时:
sam_local_invoke和基于容器的构建都需要它 - 验证:使用适当的命令,例如
docker --version或finch --version
MCP 服务配置
默认启用写入权限。 此插件在 .mcp.json 中附带 --allow-write,因此 MCP 服务可以代表用户创建项目、生成 IaC 并部署。
默认情况下未启用对敏感数据(例如 Lambda 和 API Gateway 日志)的访问。若要授予此权限,请在 .mcp.json 中添加 --allow-sensitive-data-access。
SAM 模板验证钩子
此插件包含一个 PostToolUse 钩子,可在对 template.yaml 或 template.yml 进行任何编辑后自动运行 sam validate。如果验证失败,错误会以系统消息的形式返回,以便你立即修复。此钩子要求安装 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 服务不可用
- 告知用户:“AWS Serverless MCP 无响应”
- 询问:“是否在没有 MCP 支持的情况下继续?”
- 未经用户确认,不要继续