【问题标题】:How does an AWS Lambda function scale inside a VPC subnet?AWS Lambda 函数如何在 VPC 子网内扩展?
【发布时间】:2019-08-01 05:01:29
【问题描述】:

我了解 AWS Lambda 是一个无服务器概念,其中可以在某些事件上触发一段代码。
我想了解 Lambda 如何处理缩放?
例如。如果我的 Lambda 函数位于 VPC 子网内,因为它想要访问 VPC 资源,并且该子网的 CIDR 为 192.168.1.0/24,这将导致在减去 AWS 保留的 5 个 IP 后得到 251 可用 IP
这是否意味着如果我的 AWS Lambda 函数同时获得 252 次调用,
只有 251 个请求会得到处理,其中 1 个请求要么超时,要么会在 252 个函数之一完成执行后被执行?
子网大小对于 AWS Lambda 扩展是否重要?

我正在关注this reference doc,其中提到了每个区域的并发执行限制,
我是否可以假设无论 AWS Lambda 函数是 No VPC 还是位于 VPC 子网内,它都会按照文档中提到的限制进行扩展?

【问题讨论】:

  • .. lambda 函数甚至可能与您的子网有一个 IP.. 子网大小实际上应该很重要

标签: amazon-web-services aws-lambda


【解决方案1】:

是的,你是对的。子网大小确实很重要,你必须小心你的 CIDR 块。对于最后一次调用(第 252 次),它取决于调用 lambda 的方式:同步(例如 API Gateway)或异步(例如 SQS)。如果它被同步调用,它将被限制,并且您的 API 将响应 429 HTTP 状态,代表“请求过多”。如果它是异步的,它将被限制并在 6 小时内重试。更详细的描述可以在page找到。

另外我最近在我的博客中发布了post,这与您的问题有关。您可能会发现它很有用。

【讨论】:

  • 那么如果我为 Lambda 函数选择 2 个子网,每个子网大小为 251,并且如果函数通过 API 网关调用,那是否意味着我的新扩展大小为 251+251= 502?
  • 除非您的子网不是专用于 lambda 并且其中还有更多(EC2 实例?),否则应该是 502。将 lambda 放在不同的子网中是一个好习惯,因为它会变成多可用区,这是容错的。
  • 另外,我不得不提一下,在 ReInvent 2018 上,Mark Booger(AW​​S Lambda 团队的首席工程师)宣布了 2019 年的解决方案,既适用于 VPC 冷启动,也适用于这种丑陋的 IP 地址计算方法:twitter.com/jeremy_daly/status/1068272580556087296
  • 好的,所以将函数放在多个子网下会使其成为 HA,并且还有助于扩展该函数所在子网的可用私有 IP 的总大小?
  • 是的,因为 VPC 不是云中的实际数据中心(就像人们所说的那样),而是一个软件定义的网络,我们可以利用这样的东西
【解决方案2】:

Vladyslav 的回答在技术上仍然是正确的(子网大小确实很重要),但自从它被编写以来,情况发生了很大变化,而且子网大小的考虑要少得多。见aws' announcement

  • 由于网络接口在执行环境之间共享,通常每个函数只需要少数网络接口。您帐户中跨功能的每个唯一安全组:子网组合都需要不同的网络接口。如果您帐户中的多个功能共享一个组合,我们会在多个功能之间重复使用相同的网络接口。
  • 您的函数扩展不再与网络接口的数量直接相关,超平面 ENI 可以扩展以支持大量并发函数执行

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2018-01-27
    • 2021-06-13
    • 2017-08-24
    • 2019-03-30
    • 2020-08-07
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多