从作为 API 网关的 Lambda 内部建立数据库连接
Making DB connections from within Lambda that is being API gateway
据我了解,如果我要在 API 网关后面添加一个 lambda 函数,我将需要在每次 lambda 函数调用时建立一个 RDS 连接。那会减慢速度,因为我无法汇集连接。如果是这种情况,将一些 REST 服务迁移到 api 网关 + lambda 是否值得?
在 AWS Lambda 中,在处理程序外部调用的代码在请求中缓存。我不知道您的函数使用哪种语言,但您可以查看这篇文章以了解:http://blog.matthewdfuller.com/2015/12/aws-lambda-occasionally-reliable-caching.html
因此,如果您的数据库连接是在处理程序之外完成的,您可以在不同的请求之间保持它,而不是为每个请求都连接到您的数据库。
您应该会看到一些连接重用,尤其是在持续负载下。一些请求会得到一个最近处理过相同功能的热容器,因此正如 Cagatay 提到的,处理程序之外的任何代码都可能被初始化。
处理程序代码应该能够设置为使用打开的连接,或者在必要时建立一个新连接。
据我了解,如果我要在 API 网关后面添加一个 lambda 函数,我将需要在每次 lambda 函数调用时建立一个 RDS 连接。那会减慢速度,因为我无法汇集连接。如果是这种情况,将一些 REST 服务迁移到 api 网关 + lambda 是否值得?
在 AWS Lambda 中,在处理程序外部调用的代码在请求中缓存。我不知道您的函数使用哪种语言,但您可以查看这篇文章以了解:http://blog.matthewdfuller.com/2015/12/aws-lambda-occasionally-reliable-caching.html
因此,如果您的数据库连接是在处理程序之外完成的,您可以在不同的请求之间保持它,而不是为每个请求都连接到您的数据库。
您应该会看到一些连接重用,尤其是在持续负载下。一些请求会得到一个最近处理过相同功能的热容器,因此正如 Cagatay 提到的,处理程序之外的任何代码都可能被初始化。
处理程序代码应该能够设置为使用打开的连接,或者在必要时建立一个新连接。