05.4 · AWS Lambda 调用前端与并发详解:准入控制、并发计算、预留并发与 429 限流

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

背景:本文选自开源学习指南《AWS Lambda 心智模型》(中英双语)。全书用一个贯穿示例串联:网店 ShopFast 的checkout函数,周四通过prod别名把 v7 金丝雀发布到 v8,周五黑五开售前把预置并发(PC,Provisioned Concurrency)提到 400;文中的"第 N 步"即指该示例中的步骤,完整场景见 04 贯穿示例。

你在这里:第 5 阶段,深入 4 / 7。示例第4步(Alice 被准入)、第7步(09:00 第一波)、第8步(PC 已满但 Bob 仍被准入)、第9步(Carol 被限流)。
读完本文你将知道:在任何代码运行之前请求经历了什么、并发如何计算、账号并发与预留并发以及扩缩速率限制如何工作,以及限流的真正含义。


1. 角色回顾

负责:准入决策——调用方是否被允许、指的是哪个版本、是否还有并发余量?出场于:第 4、7、8 步(准入)与第 9 步(以 429 拒绝)。

2. 内部设计

2.1 调用前端(Invoke Frontend)

位于 Region 级 Lambda 端点之后、跨多个 AZ(Availability Zone,可用区)的无状态请求处理集群。对每个Invoke:

  1. 认证SigV4(Signature Version 4,签名版本 4)签名(API Gateway 以其服务主体签名)。
  2. 依据函数的基于资源的策略授权(lambda:InvokeFunction,可限定到某个Qualifier)。
  3. 从缓存加载函数/限定符的元数据:把别名解析为版本(05.2)、内存大小、限额。
  4. 向计数服务申请一个并发单位。
  5. 向分配服务申请一个环境(05.5),把负载流式发送过去,等待结果。
  6. 释放并发单位并返回响应。

调用类型改变的是谁在等待,而不是核心路径:

类型调用方体验路径
同步(RequestResponse)——API Gateway、Function URL、SDK(Software Development Kit,软件开发工具包)等待结果;限流时直接看到 429前端 → 环境,如上所述
异步(Event)——S3(Simple Storage Service,简单存储服务)、SNS(Simple Notification Service,简单通知服务)、EventBridge立即得到202前端放入内部队列;内部轮询器稍后同步调用,失败重试(默认 2 次),遇到限流则退避
轮询式(ESM(Event Source Mapping,事件源映射))——SQS(Simple Queue Service,简单队列服务)、Kinesis、DynamoDB Streams没有直接调用方Lambda 托管的轮询器批量读取并同步调用

2.2 并发——Lambda 唯一据以扩缩的数字

并发 = 在途调用数 = 忙碌环境数 ≈ RPS(Requests Per Second,每秒请求数)× 平均时长(秒)。

流量平均时长并发
2,000 RPS150 ms300
4,500 RPS150 ms675
4,500 RPS600 ms(冷启动拉长时长)2,700

最后一行是陷阱:慢代码或冷启动会成倍放大并发。缩短时长本身就是容量优化。

2.3 计数服务执行的限额

Region 账号限额
默认 1,000
ShopFast 为 3,000

为 checkout 预留 800
既是下限也是上限

为其他函数预留

未预留池
始终 ≥ 100

其中 prod 的 PC:
50 → 400

checkout 剩余的
按需余量

图注:并发如何被切分——预留并发是一块私有切片;PC 位于其内。

限额作用范围触达时的效果
账号并发限额Region 内所有函数无预留并发的函数共享剩余部分;多出的请求 → 429
预留并发(RC(Reserved Concurrency,预留并发))单个函数为该函数提供保障并设上限。RC = 0 表示"始终限流"(紧急关闭开关)。
扩缩速率单个函数每 10 秒最多新增 1,000 个环境(连续补充,不累积)
RPS 限额单个函数可用并发 × 10(防止极短调用压垮系统)

计数服务是一个按函数、按账号的低延迟复制计数器:准入时加一,完成时减一。由于它必须在远低于一毫秒内回答 Region 内的每一次调用,它被分区并保存在内存中,以牺牲绝对的全局精确换取速度——限额会被紧密执行,但并非每一瞬间都精确到个位。

2.4 限流是什么(以及不是什么)

限流是计数服务在说没有容量预算——而不是"没有机器"。它表现为429 TooManyRequestsException,带有ReservedFunctionConcurrentInvocationLimitExceeded或ConcurrentInvocationLimitExceeded等原因。它廉价且即时:没有触碰任何环境,也不计费。

3. 交互

分配服务计数服务调用前端API Gateway分配服务计数服务调用前端API Gateway运行并等待结果alt[未超任何限额][触达某项限额]Invoke checkout:prod (SigV4)认证、策略检查别名 → v8acquire(checkout, 账号)准许申请环境 (checkout, v8)环境租约释放200 + 负载拒绝(附原因)429 TooManyRequests

图注:准入握手——计数服务决定"能否运行",分配服务决定"在哪里运行"。

4. ⚓ 回到示例——第 4、7、8、9 步

第 4 步(Alice,周四 14:05)。前端验证 API Gateway 的签名,找到允许apigateway.amazonaws.com调用checkout:prod的策略语句,把别名解析为 v8,并询问计数服务:checkout为 20/800,账号为 140/3,000 → 准许。

第 7 步(周五 09:00)。2,000 RPS,300 在途。计数:300/800 → 全部准许。这 300 个请求占用了 400 个 PC 环境中的 300 个。

第 8 步(Bob,09:05)。675 在途。计数:675/800 →准许。注意计数服务既不知道也不关心 PC 已满;它只检查预算。Bob 拿到热环境还是冷环境是分配服务的事(05.5)。那 275 个溢出环境都是新建的按需环境——在扩缩速率(每 10 秒 +1,000)之内,所以没有因扩缩而被限流。

第 9 步(Carol,09:06)。需求瞬间达到约 850。Bob 等人的冷启动拉长了平均时长,推高了并发。Carol 的请求到达时,checkout已有 800 在途:

{"Type":"User","message":"Rate Exceeded.","Reason":"ReservedFunctionConcurrentInvocationLimitExceeded"}

API Gateway 把 Lambda 的 429 映射为返回给 Carol 浏览器的错误,客户端带抖动在 300 毫秒后重试并成功。CloudWatch 显示某一分钟Throttles> 0。ShopFast 为什么接受这一点?因为 RC = 800 是刻意设置的护栏:它保护下游支付服务商(只允许约 800 个并行连接),并保证其他函数保有账号 3,000 中属于它们的份额。

5. 失败行为

失败行为设计应对
吵闹函数耗尽账号限额所有未预留的函数都被限流为关键函数设预留并发;为吵闹函数设 RC 上限。
突发速度超过扩缩速率429,ConcurrentExecutions图呈阶梯状用 PC 应对突发;或用队列(SQS)削峰。
时长退化(依赖变慢)同样的 RPS 下并发暴涨 → 限流下游调用设超时;对Duration和ConcurrentExecutions设告警。
前端主机在请求中途宕机同步调用方看到错误/超时;异步事件从内部队列重试让 handler 幂等(异步与 ESM 投递是至少一次)。

下一篇 →05.5 分配与放置 ·返回03 概念地图


📚 返回专栏目录

相关新闻

博途PID仿真程序包解析:组态、整定与避坑全指南

博途PID仿真程序包解析:组态、整定与避坑全指南

简介:面向工业自动化初学者与工程师的博途PID离线仿真程序包,基于西门子TIA Portal环境,涵盖PID控制器原理、参数配置、离线波形分析及自动调谐演示等核心内容,帮助无硬件条件的用户快速掌握PID整定方法。压缩包共40个文件&#x…

2026/10/20 11:44:41 阅读更多 →
AI辅助学术论文写作:从文献阅读到润色校对的实操指南

AI辅助学术论文写作:从文献阅读到润色校对的实操指南

期刊论文写作这事,没写过的人总觉得不就是把实验数据码一码、套个模板的事。真上手才发现,从选题到投稿,处处是坑。光是读文献就够你喝一壶:几十篇论文铺在眼前,哪几篇是真正的奠基性工作,哪几篇只是在灌水…

2026/10/20 11:44:41 阅读更多 →
论文精读(十):面向具身人工智能的物体目标导航综述:从“找东西”到启元Q1的导航基础能力

论文精读(十):面向具身人工智能的物体目标导航综述:从“找东西”到启元Q1的导航基础能力

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 11:44:41 阅读更多 →

最新新闻

深度学习训练调参实战:梯度、激活函数、学习率与优化器的链路

深度学习训练调参实战:梯度、激活函数、学习率与优化器的链路

入门深度学习时,很多人会被一连串名词劝退:激活函数、优化器、学习率、梯度。我第一次跑模型的时候也觉得它们是四个独立的调参项,今天调一下学习率,明天换一个激活函数,最后模型loss曲线像心电图一样乱跳,…

2026/10/20 13:59:00 阅读更多 →
基于PyTorch的CNN食物识别模型:从原理到实战

基于PyTorch的CNN食物识别模型:从原理到实战

你打开外卖App对着餐盒拍一张照片,系统自动识别出“宫保鸡丁”和“米饭”,然后完成结算。食堂的结算台前,摄像头一扫,餐盘里的菜品被逐项识别计价。这些场景背后,核心的技术单元就是卷积神经网络(CNN&#…

2026/10/20 13:59:00 阅读更多 →
远程桌面连接报CredSSP加密Oracle修正错误?三步修复策略

远程桌面连接报CredSSP加密Oracle修正错误?三步修复策略

1. 问题现象:这台电脑能上网,偏偏远程桌面连不上先说最常见的画面:你在公司或者家里,打开“远程桌面连接”窗口,输入对方电脑的IP,点“连接”,等了几秒,弹出来一个红色感叹号的报错—…

2026/10/20 13:59:00 阅读更多 →
rsync远程同步实战:从增量原理到定时备份与daemon部署

rsync远程同步实战:从增量原理到定时备份与daemon部署

搞运维的人,迟早都会撞上“数据同步”这道坎。不管是把代码推到多台机器上,还是把日志定期归档到备份机,甚至是给客户做异地灾备,这几个场景里最常被拉出来干活的工具,就是rsync。rsync这名字乍看像“远程同步”的缩写…

2026/10/20 13:59:00 阅读更多 →
AI Infra全景地图:七层架构、GPU调度与分布式训练实战笔记

AI Infra全景地图:七层架构、GPU调度与分布式训练实战笔记

做AI Infra这块,最头疼的其实不是某个具体技术学不会,而是知识太散。今天看了篇分布式训练的博客,明天刷到个GPU调优的视频,后天又碰到个数据管线的分享,每样都似懂非懂,真到自己搭环境、调性能的时候&…

2026/10/20 13:59:00 阅读更多 →
链表环与相交的底层原理:从内存地址到工程可靠性

链表环与相交的底层原理:从内存地址到工程可靠性

1. 这不是一道“刷题”题,而是数据结构底层思维的试金石“链表是否有环,是否相交”——看到这八个字,很多人第一反应是:哦,又是LeetCode第141、142、160题。翻出快慢指针模板,背下相遇点公式,提…

2026/10/20 13:57:57 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →