AWS Lambda函数无法连接到在EC2示例上运行的mysql

f87krz0w  于 2023-03-17  发布在  Mysql
关注(0)|答案(1)|浏览(173)

我有一个运行在EC2示例上的mysql数据库(而不是使用RDS,因为RDS更便宜),我想用lambda函数连接到数据库,但总是得到(2003, "Can't connect to MySQL server on '<private ip address of ec2 instance>' ([Errno 111] Connection refused)")
我在同一个vpc中有lambda函数,它与EC2示例(默认vpc)有相同的子网,安全组允许所有端口上的所有流量。lambda函数在其权限中有完全的EC2访问权限。我可以验证mysql服务器是否已启动并运行,是否可以接受来自任何地方的连接。我完全不知道是什么原因导致了这个问题。作为参考,我使用pymysql进行连接:conn = pymysql.connect(host='<ec2 instance private ip address>', user='<user with all permissions>', passwd='<user password>', db='<database that exists in the mysql server>', connect_timeout=2)

ulydmbyx

ulydmbyx1#

要允许AWS Lambda函数连接Amazon EC2示例上运行的MySQL数据库,请检查以下内容:

  • Lambda函数连接到与EC2示例相同的VPC(完成!)
  • Lambda函数的Security Group(安全组)应具有出站流量的默认“Allow All(允许全部)”规则
  • EC2示例的安全组应该允许端口3306上来自Lambda安全组(或更大的CIDR范围,如整个VPC)的入站连接
  • NACL应保留其默认的“全部允许”入站和出站规则

如果这不起作用,那么MySQL服务器可能没有“监听”来自示例外部的传入连接。您可以通过在同一VPC中启动另一个EC2示例并尝试连接到MySQL来测试这一点。

相关问题