后端与接口
在 AWS 上构建无服务器与事件驱动架构时:用…
适用于用 AWS 构建无服务器 API、Lambda、微服务、异步/事件驱动工作流,并需要遵循最佳实践的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 AWS 上构建无服务器与事件驱动架构特定
解决思路
- 回答任何 AWS 事实前,始终用 MCP 工具(`mcp__aws-mcp__*` 或 `mcp__*awsdocs*__*`)验证;`aws-mcp-setup` 依赖会自动加载,若 MCP 工具不可用,引导用户按该 skill 的 setup flow 配置。
- 使用 CDK MCP server(由 `aws-cdk-development` 依赖提供)获取 construct 推荐和 CDK 专属指导;用 AWS Documentation MCP 验证服务功能、区域可用性和 API 规格。
- 了解这些 AWS MCP servers 通过 Full AWS MCP Server 单独提供、不随插件捆绑:AWS Serverless MCP 用于 SAM CLI 生命周期(init、deploy、local test);AWS Lambda Tool MCP 用于直接调用 Lambda;AWS Step Functions MCP 用于工作流编排;Amazon SNS/SQS MCP 用于消息和队列管理。
- 允许使用 `mcp__aws-mcp__*`、`mcp__awsdocs__*`、`mcp__cdk__*`,以及 Bash 命令 `sam *`、`aws lambda *`、`aws apigateway *`、`aws apigatewayv2 *`、`aws dynamodb *`、`aws stepfunctions *`、`aws events *`、`aws sqs *`、`aws sns *`、`aws sts get-caller-identity`。
- 配置 PreToolUse hook:在执行 `sam deploy*` 前,先运行 `aws sts get-caller-identity --query Account --output text`,且只执行一次(once: true)。
- 设计原则 1 Speedy, Simple, Singular:函数保持简洁、单一职责;像 `processOrder` 只处理订单验证、保存、发布事件,避免 `handleEverything` 同时处理订单、库存、支付、发货。
- 让函数环境高效且成本感知:减少冷启动时间、优化内存分配、仅在需要时使用 provisioned concurrency、复用连接。
- 设计原则 2 Think Concurrent Requests, Not Total Requests:为并发而非总量设计,关注并发执行限制、下游服务限流、共享资源争用、连接池大小;DynamoDB 可按负载自动扩展用 `PAY_PER_REQUEST`,或 `PROVISIONED` + `autoScaleReadCapacity`/`autoScaleWriteCapacity`,例如 `minCapacity: 5`、`maxCapacity: 100`。
- 设计原则 3 Share Nothing:函数运行环境短暂,不依赖本地文件系统;不要用 `fs.writeFileSync('/tmp/data.json', ...)`,而应写入 S3 等持久存储;状态管理用 DynamoDB 存持久状态、Step Functions 存工作流状态、ElastiCache 存会话状态、S3 存文件。
- 设计原则 4 Assume No Hardware Affinity:应用必须硬件无关;基础设施可能变化,Lambda 可能跑在不同硬件、容器实例可能被替换;用环境变量配置,避免硬件特定优化,跨环境测试。
- 设计原则 5 Orchestrate with State Machines, Not Function Chaining:用 Step Functions 编排,不要 Lambda 链式调用;使用 `stepfunctions.Chain.start(...).next(...)` 等方式;好处包括可视化工作流、内置错误处理和重试、执行历史与调试、并行和顺序执行、无需代码的服务集成。
- 设计原则 6 Use Events to Trigger Transactions:优先事件驱动而非同步请求/响应;例如 S3 `OBJECT_CREATED` 事件通知触发 Lambda,EventBridge 规则按 `source`、`detailType` 匹配并 `addTarget` Lambda;好处包括服务松耦合、异步处理、更好容错、独立扩展。
- 设计原则 7 Design for Failures and Duplicates:操作必须幂等;处理 SQS 记录时先按 `orderId` 检查 DynamoDB 是否已处理,已处理则跳过,处理后再写入 `processedAt`;实现指数退避重试逻辑 `withRetry`,`maxRetries = 3`,等待 `Math.pow(2, i) * 1000` 毫秒。
- 参考 `references/eda-patterns.md` 实现事件驱动模式:EventBridge 事件路由器(custom event bus、schema registry、基于规则路由)、SQS 队列处理(standard/FIFO、DLQ、Lambda consumers)、SNS + SQS Pub/Sub Fan-Out(多消费者、过滤)、Step Functions Saga(分布式事务、补偿动作)、DynamoDB Streams Event Sourcing(append-only 事件存储、投影)。
- 参考 `references/serverless-patterns.md` 实现无服务器模式:API 驱动微服务(REST API + Lambda backend)、Kinesis 流处理(实时、batch windowing、bisect on error)、SQS 异步任务处理(后台作业、并发控制)、EventBridge 计划任务(cron/rate schedules)、Webhook 处理(签名验证、异步队列转发)。
- 使用 references 中 CDK 代码示例时,避免硬编码资源名(如 `restApiName`、`eventBusName`),让 CDK 自动生成唯一名称,以支持复用和并行部署;详情见 `aws-cdk-development` skill。
- 错误处理:在 SQS handler 中逐条 try/catch,记录失败,收集 `SQSBatchItemFailure`,返回 `{ batchItemFailures: failures }` 以部分批处理失败重试。
- 死信队列:始终配置 DLQ;设置 `retentionPeriod` 为 14 天,队列 `deadLetterQueue` 的 `maxReceiveCount` 为 3;用 CloudWatch alarm 监控 DLQ 深度,`metricApproximateNumberOfMessagesVisible`、`threshold` 1、`evaluationPeriods` 1。
- 可观测性:NodejsFunction 启用 `tracing: lambda.Tracing.ACTIVE`(X-Ray tracing),设置环境变量 `POWERTOOLS_SERVICE_NAME`、`POWERTOOLS_METRICS_NAMESPACE`、`LOG_LEVEL`。
- 有效使用 MCP servers:用 CDK MCP server 获取 construct 推荐和 CDK 指导;用 AWS Documentation MCP 在实现前验证服务功能、区域可用性、API 规格。
- 参考安全文档 `references/security-best-practices.md`:shared responsibility model、IAM least privilege、数据保护与加密、VPC 网络安全。
- 参考可观测性文档 `references/observability-best-practices.md`:metrics、logs、traces 三支柱、Lambda Powertools 结构化日志、X-Ray 分布式追踪、CloudWatch alarms 和 dashboards。
- 参考性能优化文档 `references/performance-optimization.md`:冷启动优化、内存和 CPU 优化、包体积缩减、provisioned concurrency 模式。
- 参考部署文档 `references/deployment-best-practices.md`:CI/CD pipeline 设计、单元/集成/负载测试、canary/blue-green 部署策略、回滚和安全机制。
- 参考外部资源:AWS Well-Architected Serverless Lens(https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/)、ServerlessLand.com、AWS Serverless Workshops(https://serverlessland.com/learn?type=Workshops)。
适用边界 · 注意事项
- 没有 AWS 账号、AWS 凭证、SAM CLI、CDK MCP、AWS MCP 或相关 MCP 工具时,不能直接执行依赖这些工具的做法。
- 不是 AWS 平台、不需要事件驱动/异步处理/无服务器架构时,不必套用本技能。
- 不要把本地文件系统当持久状态、做硬件亲和性假设、用 Lambda 链式调用替代 Step Functions、或硬编码 CDK 资源名。