news 2026/10/18 1:53:26

07 · AWS Lambda 自测题与动手实验:用 AWS CLI 验证版本、别名、预置并发与冷启动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
07 · AWS Lambda 自测题与动手实验:用 AWS CLI 验证版本、别名、预置并发与冷启动

🇬🇧 English version | 📦 GitHub: https://github.com/geekchow/aws-lambda-guide

你在这里:完整走查之后。
读完本文你将知道:如何在沙箱账号中亲手验证每个概念,以及去哪里深入学习。


1. 检验你的心智模型(答案在文末)

  1. 某函数平均运行 300 毫秒,接收 1,500 RPS(Requests Per Second,每秒请求数)。它需要多少并发?如果某个依赖把它拖慢到 900 毫秒会怎样?
  2. 为什么不能在$LATEST上配置预置并发?
  3. 你设置预留并发 = 200、PC(Provisioned Concurrency,预置并发)= 200。流量需要 250。多出的 50 个请求经历的是冷启动还是限流?
  4. 在别名 PC = 20 的 10% 金丝雀期间,新版本出现溢出,而总利用率只有 40%。为什么?
  5. 你的 Init 代码读取Date.now()来计算 5 分钟后过期的令牌。为什么这只在 PC 环境中出问题?
  6. 你删除了版本 3。如果最新版本是 9,下一次PublishVersion会产生几号?

2. 动手实验(沙箱账号,约 30 分钟,花费几美分)

FN=mm-labROLE_ARN=arn:aws:iam::<account-id>:role/<lambda-basic-execution-role>cat>index.mjs<<'EOF' const initAt = Date.now(); const initType = process.env.AWS_LAMBDA_INITIALIZATION_TYPE; await new Promise(r => setTimeout(r, 800)); // 模拟缓慢的 Init export const handler = async () => ({ version: process.env.AWS_LAMBDA_FUNCTION_VERSION, initType, envAgeMs: Date.now() - initAt }); EOFzipfn.zip index.mjs# 1. 函数 + 两个版本aws lambda create-function --function-name$FN--runtimenodejs22.x\--handlerindex.handler--role$ROLE_ARN--zip-file fileb://fn.zip aws lambdawaitfunction-active-v2 --function-name$FNaws lambda publish-version --function-name$FN# → 1aws lambda update-function-configuration --function-name$FN--memory-size256aws lambdawaitfunction-updated-v2 --function-name$FNaws lambda publish-version --function-name$FN# → 2# 2. 加权别名:主版本 1,版本 2 占 50%aws lambda create-alias --function-name$FN--namelive --function-version1\--routing-config'AdditionalVersionWeights={"2"=0.5}'foriin$(seq10);doaws lambda invoke --function-name$FN:live out.json>/dev/null&&catout.json;echodone# 观察版本 1 与 2 的分布# 3. 冷与热:在 REPORT 行中寻找 "Init Duration"aws lambda invoke --function-name$FN:2 --log-type Tail out.json\--queryLogResult--outputtext|base64--decode|grepREPORT# 4. 在别名上配置预置并发(先让它只指向一个版本)aws lambda update-alias --function-name$FN--namelive --function-version2--routing-config'{}'aws lambda put-provisioned-concurrency-config --function-name$FN--qualifierlive\--provisioned-concurrent-executions2aws lambda get-provisioned-concurrency-config --function-name$FN--qualifierlive# 等待 READYaws lambda invoke --function-name$FN:live out.json&&catout.json# initType=provisioned-concurrency,envAgeMs 很大# 5. 预留并发 = 0 就是关闭开关aws lambda put-function-concurrency --function-name$FN--reserved-concurrent-executions0aws lambda invoke --function-name$FN:live out.json# → TooManyRequestsException# 清理(PC 只要配置着就在计费!)aws lambda delete-provisioned-concurrency-config --function-name$FN--qualifierlive aws lambda delete-function --function-name$FN

观察要点:版本限定的调用是稳定的;别名随机分流;Init Duration只出现在冷启动中;PC 环境报告initType=provisioned-concurrency,且envAgeMs远大于请求耗时(Init 早已完成);RC(Reserved Concurrency,预留并发)= 0 立即限流。

3. 延伸阅读

主题来源
执行环境生命周期AWS Lambda 开发者指南——“Understanding the Lambda execution environment lifecycle”
扩缩与并发开发者指南——“Lambda scaling behavior”、“Configuring reserved concurrency”、“Configuring provisioned concurrency”
版本与别名开发者指南——“Manage Lambda function versions”、“Create an alias”、“Implement canary deployments using a weighted alias”
内部实现re:Invent 演讲 “A closer look at AWS Lambda”(SVS404/SVS407 系列);论文Firecracker: Lightweight Virtualization for Serverless Applications(NSDI(Networked Systems Design and Implementation,网络系统设计与实现研讨会)2020);github.com/firecracker-microvm/firecracker
冷启动替代方案开发者指南——“Improving startup performance with Lambda SnapStart”
部署自动化AWS SAM(Serverless Application Model,无服务器应用模型)AutoPublishAlias+DeploymentPreference;CodeDeploy 的 Lambda 部署配置

答案

  1. 1,500 × 0.3 =450。900 毫秒时:1,350——变为三倍,可能在账号限额处被限流。
  2. PC 从固定制品预初始化环境;$LATEST随时可能变化,预热池会因此过时。
  3. 限流(429)。RC 把总并发限制在 200,而 PC 用掉了全部;没有剩余的按需余量可供溢出。
  4. PC 按权重拆分(10% 的版本约 2 个环境),且路由是概率性的;新版本的一阵短时突发就超过了它的 2 个环境。
  5. PC 的 Init 可能在首个请求前数分钟或数小时运行,所以"5 分钟后"的过期时间早已过去。
  6. 10——编号永不复用。

返回00 总览 · 03 概念地图


📚 返回专栏目录

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 1:53:21

procamcalib投影仪-相机系统标定实战:原理、Java集成与误差调优

简介&#xff1a;ProCamCalib是一套用户友好的投影仪-相机系统几何与颜色校准工具&#xff0c;采用Java编写&#xff0c;面向计算机视觉、增强现实及科研实验等应用场景。它支持多台相机与零个或多个投影仪的组合配置&#xff0c;以第一台相机为基准对所有设备进行立体标定&…

作者头像 李华
网站建设 2026/10/18 1:51:53

AtlasOS 驱动与中断优化指南:从诊断到回滚的实操教程

AtlasOS 驱动与中断优化指南&#xff1a;从诊断到回滚的实操教程 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and usability. 项目地址: https://gitcode.com/GitHub_Trending/atlas…

作者头像 李华
网站建设 2026/10/18 1:50:07

SpringBoot+Vue+MySQL社区物业管理系统:从设计到部署全指南

如果你的毕业设计还在犹豫选什么题目&#xff0c;我建议你认真看看这套东西——SpringBootVueMySQL搭建的社区物业管理系统。这个项目几乎覆盖了毕业设计和技术面试里可能遇到的绝大多数考点&#xff1a;后端有权限认证、接口设计、事务处理&#xff0c;前端有路由守卫、状态管…

作者头像 李华
网站建设 2026/10/18 1:49:32

大模型榜单洗牌后,用三层动态分流中枢优化模型调用

看到这个榜单标题的时候&#xff0c;我其实也愣了一下。刚过去的这个10月&#xff0c;大模型圈子的确不太平静。AA智能指数的月度榜单一出来&#xff0c;原本的头部格局直接被搅了个底朝天&#xff1a;Claude Opus 5.5 以碾压级的综合评分登顶&#xff0c;把之前不少人心里的“…

作者头像 李华