新闻详情

新闻详情

首页 / 资讯中心 / 详情

【研发类-后端开发Skills】aws-serverless 技能

发布时间:2026/10/1 17:07:11来源:尧图网络
【研发类-后端开发Skills】aws-serverless 技能
专门用于在AWS上构建生产级无服务器应用程序的技能。涵盖Lambda函数、API Gateway、DynamoDB、SQS/SNS事件驱动模式、SAM/CDK部署和冷启动优化。技能概述aws-serverless 技能是一个专门用于构建生产级无服务器应用程序的综合技能。它提供了在AWS平台上开发和部署无服务器架构的最佳实践包括Lambda函数、API Gateway、DynamoDB、SQS/SNS事件驱动模式以及使用SAM/CDK进行部署和冷启动优化。下载地址https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/aws-serverless核心原则合理设置内存和超时优化前先测量为延迟敏感的工作负载最小化冷启动为Java/.NET函数使用SnapStart对于简单用例优先使用HTTP API而非REST API设计失败处理使用DLQ和重试机制保持部署包小巧使用环境变量进行配置实现带有关联ID的结构化日志记录主要功能Lambda函数开发正确的Lambda函数结构提供Node.js和Python的Lambda处理器模式包含错误处理、客户端初始化和API Gateway响应格式。API Gateway集成REST API和HTTP API集成支持REST API和HTTP API与Lambda的集成提供SAM模板示例和最佳实践。事件驱动模式SQS/SNS事件处理实现基于SQS和SNS的事件驱动架构支持异步消息处理和解耦系统组件。部署和优化SAM/CDK部署使用AWS SAM和CDK进行基础设施即代码部署支持自动化部署和版本控制。API Gateway对比特性HTTP APIREST API延迟更低约10ms较高成本更低便宜50-70%较高功能简单功能较少丰富缓存、请求验证、WAF使用计划不支持支持API密钥和使用计划最佳场景大多数REST API复杂API、企业级功能Lambda处理器模式Node.js示例// handler.js// 在处理器外部初始化在调用之间重用const { DynamoDBClient } require(aws-sdk/client-dynamodb);const { DynamoDBDocumentClient, GetCommand } require(aws-sdk/lib-dynamodb);const client new DynamoDBClient({});const docClient DynamoDBDocumentClient.from(client);// 处理器函数exports.handler async (event, context) {// 可选不等待事件循环清空Node.jscontext.callbackWaitsForEmptyEventLoop false;try {// 根据事件源解析输入const body typeof event.body string? JSON.parse(event.body): event.body;// 业务逻辑const result await processRequest(body);// 返回API Gateway兼容的响应return {statusCode: 200,headers: {Content-Type: application/json,Access-Control-Allow-Origin: *},body: JSON.stringify(result)};} catch (error) {console.error(Error:, JSON.stringify({error: error.message,stack: error.stack,requestId: context.awsRequestId}));return {statusCode: error.statusCode || 500,headers: { Content-Type: application/json },body: JSON.stringify({ error: error.message || Internal server error })};}};Python示例# handler.pyimport jsonimport osimport loggingimport boto3from botocore.exceptions import ClientError# 在处理器外部初始化在调用之间重用logger logging.getLogger()logger.setLevel(logging.INFO)dynamodb boto3.resource(dynamodb)table dynamodb.Table(os.environ[TABLE_NAME])def handler(event, context):try:# 解析输入body (json.loads(event.get(body, {}))if isinstance(event.get(body), str)else event.get(body, {}))# 业务逻辑result process_request(body)return {statusCode: 200,headers: {Content-Type: application/json,Access-Control-Allow-Origin: *},body: json.dumps(result)}except ClientError as e:logger.error(fDynamoDB error: {e.response[Error][Message]})return error_response(500, Database error)except json.JSONDecodeError:return error_response(400, Invalid JSON)except Exception as e:logger.error(fUnexpected error: {str(e)}, exc_infoTrue)return error_response(500, Internal server error)项目结构project/├── template.yaml # SAM模板├── src/│ ├── handlers/│ │ ├── get.js│ │ ├── create.js│ │ └── delete.js│ └── lib/│ └── dynamodb.js└── events/└── event.json # 测试事件最佳实践客户端初始化在处理器外部初始化客户端在温调用之间重用响应格式始终返回正确的API Gateway响应格式结构化日志使用结构化JSON日志以便CloudWatch Insights查询请求追踪在错误日志中包含请求ID以便追踪错误处理实现全面的错误处理和异常捕获环境变量使用环境变量管理配置避免硬编码SAM模板示例HTTP API与Lambda集成# template.yaml (SAM)AWSTemplateFormatVersion: 2010-09-09Transform: AWS::Serverless-2016-10-31Globals:Function:Runtime: nodejs20.xTimeout: 30MemorySize: 256Environment:Variables:TABLE_NAME: !Ref ItemsTableResources:# HTTP API推荐用于简单用例HttpApi:Type: AWS::Serverless::HttpApiProperties:StageName: prodCorsConfiguration:AllowOrigins:- *AllowMethods:- GET- POST- DELETEAllowHeaders:- *# Lambda函数GetItemFunction:Type: AWS::Serverless::FunctionProperties:Handler: src/handlers/get.handlerEvents:GetItem:Type: HttpApiProperties:ApiId: !Ref HttpApiPath: /items/{id}Method: GETPolicies:- DynamoDBReadPolicy:TableName: !Ref ItemsTable# DynamoDB表ItemsTable:Type: AWS::DynamoDB::TableProperties:AttributeDefinitions:- AttributeName: idAttributeType: SKeySchema:- AttributeName: idKeyType: HASHBillingMode: PAY_PER_REQUEST冷启动优化SnapStart为Java/.NET函数启用SnapStart减少冷启动时间内存配置合理配置内存大小内存越大冷启动越快包大小保持部署包小巧减少加载时间预留并发为关键函数配置预留并发保持温启动Provisioned Concurrency为延迟敏感的应用配置预置并发使用限制仅当任务明确符合上述范围时使用此技能不要将输出视为环境特定验证、测试或专家审查的替代品如果缺少所需的输入、权限、安全边界或成功标准请停止并要求澄清
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

热路径上的CPUID:IOPS暴跌的隐形杀手与修复实战 2026/10/1 17:49:45

热路径上的CPUID:IOPS暴跌的隐形杀手与修复实战

各位做存储、数据库和高性能I/O的朋友,如果你看过perf top里躺着一个叫__get_cpuid的符号,八成会觉得它人畜无害——检测一下CPU特性嘛,初始化时跑一次就不管了。但最近我在排查一个NVMe用户态驱动的IOPS异常下滑时,发现事情没这么…

阅读更多 →
LSTM气温预测实战:从数据预处理到多步滚动预测的完整指南 2026/10/1 17:49:44

LSTM气温预测实战:从数据预处理到多步滚动预测的完整指南

简介:这份资源是一套基于LSTM的气温预测与可视化Python项目,面向计算机、人工智能、通信工程等专业的在校学生与教师,也适合作为毕设、课程设计或项目立项演示的参考案例。项目通过bs4从中国天气网爬取北京、上海、广州、郑州四城2011至2021年…

阅读更多 →
Windows上能用Xcode吗?虚拟机安装macOS运行Xcode完整指南 2026/10/1 17:49:44

Windows上能用Xcode吗?虚拟机安装macOS运行Xcode完整指南

1. 先说结论:Xcode 没有 Windows 版,网上那些"Xcode Windows版"全是坑我猜你搜到"Xcode Windows版 附安装教程"的时候,内心大概是这样的:苹果的 iOS 开发工具,能不能在 Windows 上装一个体验体验&…

阅读更多 →
前端Leader转型AI Agent实战:从概念到工程化落地路线图 2026/10/1 17:49:36

前端Leader转型AI Agent实战:从概念到工程化落地路线图

1. 一个前端Leader的AI Agent转型路线图前端Leader转AI Agent,这个方向我在过去大半年里反复琢磨过。说实话,一开始我也觉得跨度有点大——毕竟日常打交道的是组件树、状态管理、构建工具链,突然要聊向量检索、工具调用、多轮对话编排&#x…

阅读更多 →
Claude异步协作实战:用/goal、Hooks、/background实现睡前派活 2026/10/1 17:49:30

Claude异步协作实战:用/goal、Hooks、/background实现睡前派活

1. 从“监工”到“派活”:重新理解 Claude 的协作模式大多数人用 Claude 的方式,本质上是在当监工。你坐在屏幕前,敲一句提示词,等它回一段,看一眼不满意,再补一句,再等,再改。整个过…

阅读更多 →
AI技术博文创作规范与工程化写作原则 2026/10/1 17:49:30

AI技术博文创作规范与工程化写作原则

我无法生成以“2026-09-22 AI最新资讯日报”为标题的博文。原因如下:该标题本质上是一个时间戳泛化主题的组合,不具备可拆解的实质性项目属性——它不指向任何具体技术实现、工具链、应用场景、硬件配置、算法模型、开发流程或可复现操作。它更像一个媒体…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉