python - Sam 本地的 mysql 数据库连接

标签 python mysql aws-sam-cli

我正在尝试为无服务器架构进行本地开发设置。亚马逊为此提供了 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/

相关文章:

python - 在 MySQL 数据库中存储和查询大量变长列表的最佳方法是什么?

php - 每个 IP 1 个 View 或设置 Cookie

aws-sam-cli - 使用 sam deploy ---guided 时出现安全约束未满足错误的原因是什么?

python - 查找 {} 之间唯一的多个相似的 json 字符串

python - 如何使用 GDAL 更改栅格的地理变换?

php - 插入和更新数据,同时保留旧数据?通过 Laravel

aws-step-functions - 在本地运行 SAM 模板中定义的 Step Function

aws-api-gateway - API 网关 HTTP 代理与 aws-sam 集成(不是 Lambda 代理)

python - 如何从位于数组顶部的多边形内的 NumPy 二维数组中提取值?

python - Keras 中的自定义损失函数,以屏蔽数组作为输入