我正在尝试为无服务器架构进行本地开发设置。亚马逊为此提供了 SAM Local Beta。但是在我的项目中,我们使用的是 mysql 数据库。我正在尝试连接到我的本地 mysql 服务器,但失败了。
module initialization error:
(2003, "Can't connect to MySQL server on 'localhost'
([Errno 99] Cannot assign requested address)")
下面是我的python代码:
import json
import pymysql
def lambda_sandbox_down_handler(event, context):
rds_host = 'localhost'
name = 'localhost'
password = 'localhost'
db_name = 'localhost'
conn = pymysql.connect(rds_host,port=3306, user=name, passwd=password,
db=db_name,charset='utf8mb4',connect_timeout=5)
return conn
我可以使用命令行和 pycharm 建立连接。
我的问题是这在 SAM local 中是可能的。
我已经安装了 mysql 的 docker 镜像并启动了它。在此之后我仍然遇到同样的错误。
最佳答案
SAM Local 工具在 Docker 容器中运行您的 Lambda 函数。 localhost
不会从容器内部解析为主机 IP。
如果您使用 Docker for Mac,您可以使用特殊的 DNS 名称 docker.for.mac.localhost
作为数据库主机。
在其他操作系统上,您可以在 docker0
网络接口(interface)中查找主机的 IP,并将其用作数据库主机。例如,请参阅:From inside of a Docker container, how do I connect to the localhost of the machine?
关于python - Sam 本地的 mysql 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47440757/