基于当前使用情况的 EC2 到 Lambda 转发

EC2 to Lambda forwarding based on current usage

我的 Lambda 函数冷启动时间很长。我们已经尝试 "pinging" Lambdas 来让它们保持温暖,但这可能会变得昂贵,而且似乎是保持性能的糟糕方法。我们还有一个 EC2 实例 运行 24/7。理论上我可以 "mirror" 我们所有的 Lambda 函数到我们的 EC2 实例来响应我们的 API 调用的相同数据。我们的 Lambda 在 https://api.mysite.com and our EC2 is https://dev.mysite.com.

我的问题是我们可以 "load balance?" 两者之间的交通。 (创建一个新的子域来执行以下操作)让我们的开发子域 (EC2) 响应所有请求,直到某个 "requests per minute" 被命中。然后开始将流量路由到我们的开发子域 (Lambda),因为我们有足够的流量进入以保持 Lambda 的热度。一旦流量变慢,我们将流量移回我们的 EC2。这可能吗?

不,您不能使用 AWS 负载均衡器做到这一点。您可以做的是将 cloudwatch 触发器设置为 lambda 函数,它将 api.mysite.com 映射到 lambda 负载均衡器 dns。同样,您可以为低流量添加触发器,这将重做 dns 条目。

如果您意识到流量增加,您可以安排实例。或者你也可以试试 AWS Fargate。

希望对您有所帮助。

Cloudwatch 允许您选择要为 lambda 设置的触发器数量,即每当调用 API 时,cloudwatch 都会触发那么多的 lambda。这是您可以实现它的一种方式。还没有办法在 lambda 和实例之间进行负载平衡。

您可以配置 API 以使用 Step 函数来协调您的 lambda。