首页 > 解决方案 > VPC 中的 AWS Lambda 与数据库交互

问题描述

我最近在 QA 会议上向教授提出了一个问题。由于那天问的问题太多,我没有机会跟进这个问题。

所以问题是:人们(通常)如何绕过 VPC 中与 RDS 交互的 AWS Lambda 的冷启动时间?

他的回答是:作为流程较长部分的 ENI 仅附加在容器的开头。因此,如果您每分钟左右在数据库上运行一个小的 select top 1,它将保持连接打开,而不必附加 ENI

所以我的后续问题是,

我有多个 lambda 函数。我应该在单个 lambda 函数上运行 SELECT TOP 1,还是如果事件来自 cloudwatch,我应该从 cloudwatch ping 我的所有 lambda 函数(并选择 TOP 1)?

谢谢!

标签: amazon-web-servicesaws-lambdaamazon-rds

解决方案


问题不在于 RDS,而在于 Lambda 配置。当你有一个“冷”的 lambda 作业(一个没有运行并且没有分配给任何容器实例的)时,整个 ENI 事情就会发生。当您尝试运行“冷” Lambda 作业时,无论如何您最终都会遇到相当长的延迟:AWS 系统必须找到一个空实例,将您的作业复制到那里,预置额外的资源(ENI、路由表条目等)。 ) 然后才执行您的代码(如果您使用 Java 或 C#,执行延迟本身也可能相当高)​​。

为了防止您的工作变得“冷”,您不必 ping 数据库。您只需要确保作业被定期且经常调用,即使它什么都不做(您可以在作业参数或环境中添加一个字段来调整“什么都不做并退出”)。


推荐阅读