我试图访问我们的服务器MySQL数据库(不是AWS RDS),使用:

def lambda_handler(event, context):
    try:
        conn = pymysql.connect("mySite.com", user="admin", passwd="pass",  connect_timeout=5)

我得到返回错误:
Response:
{
  "errorMessage": "xxxxxxxxxxxxxxxxxxxxxxxxx Task timed out after 3.00 seconds"
}

我已经用AWSLambdaVPCAccessExecutionRoleWSLambdaRole设置了我的角色,并用子网和安全组设置了一个默认的VPC网络:
Security group ID: sg-xxxxxxxx
Ports: All
Destination: 0.0.0.0/0

我忘了什么吗?我用一个RDS测试了这个,我可以连接到数据库,当我尝试一个外部数据库时,它就超时了。
python - 尝试访问MySQL时AWS Python Lambda超时-LMLPHP

最佳答案

如果数据库不在VPC中,那么Lambda函数将无法访问它。在VPC中运行Lambda函数时,Lambda函数没有分配公共IP地址。要让它访问VPC之外的资源,Lambda函数必须位于一个私有子网中,并有到NAT网关的路由。
或者,如果它不需要访问VPC内部的资源,那么只需将其从VPC中删除,它就可以访问Internet。
如果数据库位于运行在EC2服务器上的VPC中,则可能需要相应地打开分配给EC2服务器的安全组。

关于python - 尝试访问MySQL时AWS Python Lambda超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57999317/

10-15 02:49