连接AWS lambda和RDS数据库时超时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接AWS lambda和RDS数据库时超时相关的知识,希望对你有一定的参考价值。

我有一个简单的.Net核心2.1 Web应用程序,我已部署到AWS lambda。该应用程序与RDS PostGres数据库进行通信。 Web应用程序能够从我的本地盒连接到RDS PostGres数据库,但同一应用程序超时连接到生产中的RDS数据库。

我错过了什么?

ASP.Net 2.1 Lambda配置:lambda具有执行角色,该角色具有对所有RDS资源具有所有权限的策略。 enter image description here enter image description here

现在,enter image description here

RDS =>连接和安全选项卡:enter image description here enter image description here

CloudWatch日志:在cloudwatch日志中单击lambda函数=>监控选项卡=>查看日志会显示以下错误:enter image description here

答案

因此,您的RDS安全组看起来只允许来自1个特定IP(76.187.198.247)的入站连接。

这仅适用于lambda在子网中(不是)与弹性IP关联的情况,并且弹性IP是RDS安全组的入站地址。

Lambda不依赖于特定的硬件,IP每次都会更改,因此您将阻止与SG的入站连接。

但是,在这种情况下,这种弹性IP是不必要的成本,有更好的方法:

1)创建一个lambda将初始化的子网,2)然后在lambda设置中选择你想要启动到VPC(与RDS实例相同)和3)选择那些子网(最佳实践是> 2如果存在AZ中断)4)更改RDS安全组设置以允许来自子网lambdas的入站流量启动

以上是关于连接AWS lambda和RDS数据库时超时的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 和 RDS 之间的间歇性超时

AWS Lambda NodeJS 连接到 RDS Postgres 数据库

Python AWS Lambda 为每个部署旋转到 RDS 的新连接

连接节点 v5.10.1 时握手不活动超时错误。到 aws mysql RDS

Laravel 使用 Lambda 迁移到 AWS RDS

AWS RDS / EC2:TimeoutError:Knex:获取连接超时。游泳池可能已满