Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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
尝试访问MySQL时AWS Python Lambda超时_Python_Mysql_Amazon Web Services_Aws Lambda_Amazon Vpc - Fatal编程技术网

尝试访问MySQL时AWS Python Lambda超时

尝试访问MySQL时AWS Python Lambda超时,python,mysql,amazon-web-services,aws-lambda,amazon-vpc,Python,Mysql,Amazon Web Services,Aws Lambda,Amazon Vpc,我正在尝试通过以下方式访问我们的服务器MySQL数据库(而不是AWS RDS): 我得到了返回错误: Response: { "errorMessage": "xxxxxxxxxxxxxxxxxxxxxxxxx Task timed out after 3.00 seconds" } 我已使用AWSLambdaVPCAccessExecutionRole和WSLambdaRole设置了我的角色,并使用子网和安全组设置了默认VPC网络: Security group ID: sg-xxxxx

我正在尝试通过以下方式访问我们的服务器MySQL数据库(而不是AWS RDS):

我得到了返回错误:

Response:
{
  "errorMessage": "xxxxxxxxxxxxxxxxxxxxxxxxx Task timed out after 3.00 seconds"
}
我已使用
AWSLambdaVPCAccessExecutionRole
WSLambdaRole
设置了我的角色,并使用子网和安全组设置了默认VPC网络:

Security group ID: sg-xxxxxxxx
Ports: All
Destination: 0.0.0.0/0  
有什么我忘了的吗?我用RDS测试了这一点,我能够连接到DB,只是当我尝试外部DB时,它超时了


如果数据库不在专有网络中,则Lambda函数将无法访问该数据库。在VPC内运行Lambda函数时,不会为Lambda函数分配公共IP地址。为了使其能够访问VPC之外的资源,Lambda功能必须位于私有子网中,并具有到NAT网关的路由

或者,如果它不需要访问专有网络内的资源,则只需将其从专有网络中删除,即可访问互联网


如果数据库位于运行在EC2服务器上的VPC中,则可能需要打开分配给EC2服务器的安全组。

我最初运行时没有VPC,但为了使用添加的RDS进行测试,在删除VPC后,我仍然会收到超时错误。还有其他想法吗?我不需要访问RDS,我需要访问远程数据库。您的数据库服务器实际上可以从Internet访问吗?在这一点上,这听起来像是数据库端的一个网络问题。嘿,马克,对不起,我被耽搁了。我可以使用公钥/私钥通过SSH访问服务器,因此我认为它不是不可访问的,如果没有找到或缺少凭据,我会假设这只会引发连接错误,因此您可以提出其他建议吗?通过SSH访问服务器并不意味着防火墙在服务器前面,允许直接连接到数据库。您需要测试从Internet连接到数据库(如通过笔记本电脑上的某些软件)以验证其可访问性。非常感谢,最后一个问题,我需要为IAM策略添加什么吗?我只有
AWSLambdaBasicExecutionRole
权限策略。
Security group ID: sg-xxxxxxxx
Ports: All
Destination: 0.0.0.0/0