mcpField
A
aws-lambda

aws-lambda

github.com/awslabs云与 DevOps931259 次安装3 周前更新
代码仓库

关于 aws-lambda

aws-lambda 是面向 AWS Lambda 开发者的技能,通过 AWS Serverless MCP Server 提供无服务器应用开发指导。内容涵盖 SAM CLI、事件源、可观测性、性能优化及部署相关实践。

主要功能

  1. 01SAM CLI 初始化、构建与测试指导
  2. 02Lambda Web Adapter Web 应用部署
  3. 03配置 DynamoDB、Kinesis、SQS 和 Kafka 触发器
  4. 04EventBridge 模式与架构指导
  5. 05CloudWatch 与 X-Ray 可观测性指导
  6. 06性能、成本和故障排查建议

适用场景

  1. 01构建和部署 Lambda 无服务器应用
  2. 02为函数配置事件源映射
  3. 03部署基于 Lambda Web Adapter 的 Web 应用
  4. 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.md
event-sources.md
getting-started.md
observability.md
optimization.md
orchestration-and-workflows.md
powertools.md
troubleshooting.md
web-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 跟踪
  • 性能优化:调整实例规格、优化成本和排查问题

何时加载参考文件

根据用户正在处理的内容加载相应的参考文件:

最佳实践

项目设置
  • 应做:根据使用场景,使用 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 个 vCPU1,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 设置
  1. 安装 SAM CLI:按照 SAM CLI 安装指南 操作
  2. 验证:运行 sam --version
容器运行时设置
  1. 安装兼容 Docker 的容器运行时:sam_local_invoke 和基于容器的构建都需要它
  2. 验证:使用适当的命令,例如 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 支持的情况下继续?”
  • 未经用户确认,不要继续

资源

评论

支持 Markdown