从 Lambda 访问 Amazon Aurora?

Accessing Amazon Aurora from Lambda?

我是 AWS 开发的初学者,我有一个关于从 lambda 访问 amazon aurora 的问题。

我读到 Amazon Aurora 的所有实例都需要在 VPC 中创建。但是,似乎 Lambda 每次尝试访问 VPC 内的资源时都会导致设置弹性网络接口 (ENI) 的大量延迟

https://medium.freecodecamp.org/lambda-vpc-cold-starts-a-latency-killer-5408323278dd

因为这可能会增加大约 10 秒的冷启动时间,有没有办法在使用 Lambda 访问 Amazon RDS 时避免这种 ENI 设置延迟?

您需要做的是确保您的 lambda 角色附加了 AWSLambdaVPCAccessExecutionRole 策略。

您的 ENI 是在冷启动时创建的。通过创建另一个 lambda 来按计划调用您当前的 lambda 以使其保持温暖,从而避免冷启动。

没有。目前没有 "good" 可靠地防止冷启动的方法。

(1) 是的,保持 lambda 函数温暖可以帮助减少问题,但它仍然会存在。

(2) 唯一的方法是,如果您 运行 您的 rds "outside" 一个 VPC(即使其公开可用)并使用安全组对其进行保护。但这是一个非常糟糕的主意,原因有很多(lambda ip 地址发生变化,因此您需要让 rds 实例对任何攻击者保持开放,违反 aws 最佳实践等)。

如果您需要响应能力,AWS lambda + rds 目前不适合。这就是为什么亚马逊如此大力推动 dynamodb 与 lambda 的使用(因为它使用 https)。

如果你需要响应能力+安全性请远离lambda+rds。