Amazon web services 连接AWS lambda和RDS数据库时超时

Amazon web services 连接AWS lambda和RDS数据库时超时,amazon-web-services,aws-lambda,amazon-rds,Amazon Web Services,Aws Lambda,Amazon Rds,我有一个简单的.NETCore2.1Web应用程序,已部署到AWSLambda。应用程序与RDS PostGres数据库对话。web应用程序可以从我的本地邮箱连接到RDS PostGres数据库,但同一应用程序在生产中连接到RDS数据库时超时 我错过了什么 ASP.Net 2.1 Lambda配置:Lambda具有执行角色,该角色具有对所有RDS资源拥有所有权限的策略。 IAM: RDS=>连接和安全选项卡: CloudWatch日志:单击lambda函数=>Monitoring选项卡=>

我有一个简单的.NETCore2.1Web应用程序,已部署到AWSLambda。应用程序与RDS PostGres数据库对话。web应用程序可以从我的本地邮箱连接到RDS PostGres数据库,但同一应用程序在生产中连接到RDS数据库时超时

我错过了什么

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

IAM:

RDS=>连接和安全选项卡:

CloudWatch日志:单击lambda函数=>Monitoring选项卡=>查看CloudWatch日志中的日志显示以下错误:

因此,您的RDS安全组似乎只允许来自1个特定IP 76.187.198.247的入站连接

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

lambda没有绑定到特定的硬件,并且IP每次都会改变,因此您将阻止与SG的入站连接

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

1) 创建lambda将在其中初始化的子网, 2) 然后在lambda设置中选择要启动到VPC(与RDS实例相同)并 3) 选择这些子网(如果发生AZ停机,最佳做法为>2)
4) 更改RDS安全组设置,以允许从子网lambdas launch到

的入站流量,这样看来您的RDS安全组只允许从1个特定IP 76.187.198.247进行入站连接

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

lambda没有绑定到特定的硬件,并且IP每次都会改变,因此您将阻止与SG的入站连接

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

1) 创建lambda将在其中初始化的子网, 2) 然后在lambda设置中选择要启动到VPC(与RDS实例相同)并 3) 选择这些子网(如果发生AZ停机,最佳做法为>2)
4) 将RDS安全组设置更改为允许来自子网lambdas launch的入站流量进入

如何知道RDS实例在公共IP地址上可用?“RDS=>连接和安全选项卡=>公共可访问性”表示是。在这种情况下,我还需要做些什么吗?scruber.cr3tjir7qaoh.us-east-1.rds.amazonaws.com,这似乎很好,可以解析为公共IP,并且您在安全组中允许0.0.0.0/0,下一个选项是检查网络ACL,您还需要检查用于DB的子网是否应该是公共子网(他们的路由表中应该有IGW),顺便说一句,端口5432上无法访问IP 3.212.247.171谢谢@JamesDean,在我这样做之前,我需要阅读IAM、VPC、子网、IGW等:(只是一件小事,让你的数据库像这样向全世界公开是一个糟糕的主意。你为什么不使用VPC?@rdas的观点很好,你可以在VPC中使用lambda,并使用私有ip连接到db。我怎么知道RDS实例在公共ip地址上可用呢“RDS=>连接和安全选项卡=>公共访问性“回答是。在这种情况下我还需要做些什么吗?scruber.cr3tjir7qaoh.us-east-1.rds.amazonaws.com,这似乎很好,可以解析为公共IP,并且您在安全组中允许0.0.0.0/0,下一个选项是检查网络ACL,您还需要检查用于DB的子网是否应该是公共子网(他们的路由表中应该有IGW),顺便说一句,端口5432上无法访问IP 3.212.247.171谢谢@JamesDean,在我这样做之前,我需要阅读IAM、VPC、子网、IGW等:(只是一件小事,让你的数据库像这样向全世界公开是一个糟糕的主意。你为什么不使用VPC?@rdas提出了一个很好的观点,你可以在VPC中使用lambda,并使用私有ip连接到db。允许按安全组而不是按子网进入可能更好。使用特定的安全组和配置启动lambdaI允许从Lambda安全组进入RDS安全组。yep@jarmod在这里是100%正确的,应该由SG提供。这就是我得到的,感谢您的更正。允许按安全组进入可能比按子网进入更好。使用特定安全组启动Lambda,并将RDS安全组配置为允许ingrLambda安全组的ess.yep@jarmod在这里是100%正确的,应该是SG。这就是我得到的,谢谢你的更正。