管理 Lambda 预留并发 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

管理 Lambda 预留并发

有两种类型的并发控件可用:

  • 预留并发 – 预留并发保证了函数的最大并发实例数。当一个函数有预留并发时,任何其他函数都不可以使用该并发。为函数配置预留并发不收取任何费用。

  • 预配置并发 – 预配置并发可初始化请求数量的执行环境,使其准备好立即响应函数的调用。请注意,配置预置并发会对您的 Amazon 账户产生费用。

本主题详细介绍了如何管理和配置预留并发。如果要减少函数的延迟,可使用预置并发

并发性 是您的函数在任何给定时间所服务的请求的数目。调用函数时,Lambda 会分配一个实例来处理事件。当函数代码完成运行时,它会处理另一个请求。如果当仍在处理请求时再次调用函数,则分配另一个实例,从而增加该函数的并发。您账户中所有函数的总并发性受每个区域配额的限制。

要了解并发与扩缩的交互方式,请参阅 Lambda 函数扩展

配置预留并发

要管理函数的预留并发设置,请使用 Lambda 控制台。

要为函数预留并发性

  1. 打开 Lamba 控制台的 Functions(函数)页面

  2. 选择函数。

  3. 选择 Configuration(配置),然后选择 Concurrency(并发)。

  4. 并发下,选择编辑

  5. 选择预留并发。输入要为该函数预留的并发数量。

  6. 选择保存

您最多可以预留所显示的 Unreserved account concurrency (未预留账户并发) 值;对于没有预留并发的函数,可预留的并发数量为该值减去 100。要限制函数,请将预留并发设置为零。这将停止处理任何事件,直到您删除限制。

以下示例显示了两个具有预留并发池的函数,以及其他函数使用的非预留并发池。当池中的所有并发都已使用时,会出现限制错误。


        分配给两个函数的预留并发。

Legend

  • 函数并发

  • 预留并发

  • 非预留并发

  • 限制

预留并发具有以下效果。

  • 其他函数无法阻止您的函数扩缩 – 在没有预留并发的同一区域中,您所有账户的函数共享未预留并发的池。如果没有预留并发,其他函数可能会耗尽所有可用的并发,从而导致您的函数无法根据需要进行扩展。

  • 您的函数不能无节制地横向扩展 – 预留并发还限制您的函数使用非预留池中的并发数量,从而限制了其最大并发数量。您可以预留并发以防止您的函数使用该区域中的所有可用并发,或者防止下游资源过载。

设置每函数并发会影响可用于其他函数的并发池。为避免出现问题,请限制可以使用 PutFunctionConcurrencyDeleteFunctionConcurrency API 操作的用户数量。

使用 Lambda API 配置并发

要使用 Amazon CLI 或 Amazon SDK 管理并发设置,请使用以下 API 操作。

要使用 Amazon CLI 配置预留并发,请使用 put-function-concurrency 命令。以下命令为名为 my-function 的函数预留 100 的并发:

aws lambda put-function-concurrency --function-name my-function --reserved-concurrent-executions 100

您应看到以下输出:

{ "ReservedConcurrentExecutions": 100 }