Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RDS上lambda函数与MySQL的连接问题_Mysql_Amazon Web Services_Aws Lambda_Amazon Rds - Fatal编程技术网

RDS上lambda函数与MySQL的连接问题

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

我试图从AWS Lambda Python函数访问AmazonRDS上的MySQL数据库。运行测试后,出现连接失败错误:

“错误消息”:“2019-05-27T15:14:26.967Z f6e8ae8d-1dfc-4be5-9e00-a2c937e4ca2c任务在3.00秒后超时”

我认为这是由于VPC或NAT或安全组的配置造成的

我试着遵循:

但仍然不起作用

我有:

  • 连接了一个Internet网关的默认VPC
  • 与一个路由表和一个网络ACL关联的具有IPv4 CIDR
    xxx.xx.0.0/20(子网001)和
    xxx.xx.16.0/20(子网002)的2个子网
  • NAT网关与子网001关联
我的问题是:

根据这两个教程,我需要一个VPC,四个子网(1,2,3,4),前两个子网与访问本地和internet网关的主路由表相关联。第二两个子网与访问本地和NAT网关的“lambda到internet”路由表相关联

NAT网关应与子网1关联。我说得对吗

对于网络ACL,是否所有四个子网都与同一ACL关联

在Lambda VPC设置中,我是添加所有四个子网还是仅添加最后两个子网

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实例上的安全组(
    RDS-SG
    ),允许来自端口3306上的
    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服务都无法访问它