RDS上lambda函数与MySQL的连接问题
我试图从AWS Lambda Python函数访问AmazonRDS上的MySQL数据库。运行测试后,出现连接失败错误: “错误消息”:“2019-05-27T15:14:26.967Z f6e8ae8d-1dfc-4be5-9e00-a2c937e4ca2c任务在3.00秒后超时” 我认为这是由于VPC或NAT或安全组的配置造成的 我试着遵循:RDS上lambda函数与MySQL的连接问题,mysql,amazon-web-services,aws-lambda,amazon-rds,Mysql,Amazon Web Services,Aws Lambda,Amazon Rds,我试图从AWS Lambda Python函数访问AmazonRDS上的MySQL数据库。运行测试后,出现连接失败错误: “错误消息”:“2019-05-27T15:14:26.967Z f6e8ae8d-1dfc-4be5-9e00-a2c937e4ca2c任务在3.00秒后超时” 我认为这是由于VPC或NAT或安全组的配置造成的 我试着遵循: 但仍然不起作用 我有: 连接了一个Internet网关的默认VPC 与一个路由表和一个网络ACL关联的具有IPv4 CIDRxxx.xx.0
- 连接了一个Internet网关的默认VPC
- 与一个路由表和一个网络ACL关联的具有IPv4 CIDR
xxx.xx.0.0/20(子网001)和
xxx.xx.16.0/20(子网002)的2个子网
- NAT网关与子网001关联
rds\u host=“我的主机名”
name=“我的用户名”
password=“我的密码”
db\u name=“我的\u db\u name”
conn=pymysql.connect(rds\u主机,user=name,passwd=password,db=db\u name,connect\u超时=5)
您的问题中有很多信息,因此很难全部回答,但您的基本问题似乎是如何允许AWS Lambda函数连接到Amazon RDS实例
您的配置需要:
- 配置为连接到VPC的Lambda功能(任何子网,都无所谓)
- 在同一VPC中启动的Amazon RDS实例
- Lambda函数上的安全组(
)-它不需要任何配置,但需要存在Lambda SG
- Amazon RDS db实例上的安全组(
),允许来自端口3306上的RDS-SG
的入站流量Lambda SG
RDS-SG
允许从Lambda SG
进行连接。一个安全组可以引用另一个安全组
另外,增加Lambda函数的超时时间。当前设置为3秒,这可能不足以完成您正在尝试的操作。连接超时设置为5秒,因此需要Lambda函数运行超过此时间才能确认发生了什么
这就是你所需要的。此设置不需要NAT网关。仅当您希望Lambda功能连接到VPC并能够连接到Internet时,才需要此功能。对于您所描述的内容,您只需要一个子网(对于RDS db实例),但是您的体系结构可能需要更多的子网用于您正在使用的其他资源。事件Lambda和RDS位不需要Internet网关。但是,请专注于让Lambda RDS连接正常运行,然后您就可以进行清理。如果Lambda功能和RDS实例位于同一个VPC中,则不需要执行所有这些网络配置工作。只需为Lambda函数分配一个安全组,并允许作为RDS安全组中的源访问该安全组。如果Lambda函数也需要访问VPC之外的东西,您只需要执行所有这些操作。@Mark B,是的,Lambda函数和RDS实例在同一个VPC中,我在开始时没有执行任何操作,但它不起作用。所以我找到了这些教程,但在我按照这些步骤配置之后,它仍然不起作用。谢谢John!我根据您的提示解决了问题,RDS-SG的入站导致了问题,端口3306被设置为仅我的IP,因此任何aws服务都无法访问它