资讯详情

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

📅 2026/10/18 1:53:28 | 华诺云谱 👁 阅读
07 · AWS Lambda 自测题与动手实验:用 AWS CLI 验证版本、别名、预置并发与冷启动
English version GitHub: https://github.com/geekchow/aws-lambda-guide你在这里完整走查之后。读完本文你将知道如何在沙箱账号中亲手验证每个概念以及去哪里深入学习。1. 检验你的心智模型答案在文末某函数平均运行 300 毫秒接收 1,500 RPSRequests Per Second每秒请求数。它需要多少并发如果某个依赖把它拖慢到 900 毫秒会怎样为什么不能在$LATEST上配置预置并发你设置预留并发 200、PCProvisioned Concurrency预置并发 200。流量需要 250。多出的 50 个请求经历的是冷启动还是限流在别名 PC 20 的 10% 金丝雀期间新版本出现溢出而总利用率只有 40%。为什么你的 Init 代码读取Date.now()来计算 5 分钟后过期的令牌。为什么这只在 PC 环境中出问题你删除了版本 3。如果最新版本是 9下一次PublishVersion会产生几号2. 动手实验沙箱账号约 30 分钟花费几美分FNmm-labROLE_ARNarn:aws:iam::account-id:role/lambda-basic-execution-rolecatindex.mjsEOF 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-configAdditionalVersionWeights{20.5}foriin$(seq10);doaws lambda invoke --function-name$FN:live out.json/dev/nullcatout.json;echodone# 观察版本 1 与 2 的分布# 3. 冷与热在 REPORT 行中寻找 Init Durationaws 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.jsoncatout.json# initTypeprovisioned-concurrencyenvAgeMs 很大# 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 环境报告initTypeprovisioned-concurrency且envAgeMs远大于请求耗时Init 早已完成RCReserved 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 ApplicationsNSDINetworked Systems Design and Implementation网络系统设计与实现研讨会2020github.com/firecracker-microvm/firecracker冷启动替代方案开发者指南——“Improving startup performance with Lambda SnapStart”部署自动化AWS SAMServerless Application Model无服务器应用模型AutoPublishAliasDeploymentPreferenceCodeDeploy 的 Lambda 部署配置答案1,500 × 0.3 450。900 毫秒时1,350——变为三倍可能在账号限额处被限流。PC 从固定制品预初始化环境$LATEST随时可能变化预热池会因此过时。限流429。RC 把总并发限制在 200而 PC 用掉了全部没有剩余的按需余量可供溢出。PC 按权重拆分10% 的版本约 2 个环境且路由是概率性的新版本的一阵短时突发就超过了它的 2 个环境。PC 的 Init 可能在首个请求前数分钟或数小时运行所以5 分钟后的过期时间早已过去。10——编号永不复用。返回00 总览 · 03 概念地图 返回专栏目录
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑