AWS Lambda 中的 PyMySql - 对等点重置连接

Posted

技术标签:

【中文标题】AWS Lambda 中的 PyMySql - 对等点重置连接【英文标题】:PyMySql in AWS Lambda - Connection Reset By Peer 【发布时间】:2019-03-20 05:03:55 【问题描述】:

我目前正在尝试使用 AWS Lambda 中的 Pymysql python 库在我们的本地环境中查询 Sql Server。

我要做的就是使用以下代码创建我的连接对象:

import pymysql

def lambda_handler(event, context):
    conn = pymysql.connect(
        host = 'MYSERVER',
        port = 1433,
        user = 'acctname',
        passwd = 'acctpass',
        db = 'dbName'
    )

如果没有以下错误消息,我什至无法通过这个:

(2013, 'Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)')

我可以确认端口和凭据是否正确。

我希望这不是 AWS 中 lambda 的限制。如果我可以从 Lambda for SQL Server 中利用任何其他服务或库,请告诉我!

编辑:我的 lambda 在连接到我的本地环境的 VPC 中运行。

【问题讨论】:

Lambda 函数是否配置为在 VPC 内运行?另外,您的本地服务器前是否有防火墙需要打开? 我应该提到,是的,我的 lambda 在 VPC 中运行。不,本地数据库前面不应该有防火墙客栈。我现在正在验证。 【参考方案1】:

对于在 VPC 内运行以访问 VPC 外部任何内容的 AWS Lambda 函数,它必须位于 VPC 的私有子网中,该子网包含到 NAT 网关的路由。 VPC 内的 Lambda 函数没有公共 IP 地址,因此您必须通过 NAT 提供 Internet 访问。

【讨论】:

以上是关于AWS Lambda 中的 PyMySql - 对等点重置连接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 3.6 将 pymysql 模块安装到 AWS Lambda [重复]

AWS Lambda python库函数错误

AWS 无法导入模块“app”:没有名为 Pymysql 的模块

如何配置 AWS lambda 函数以对不同 aws 子账户中的 dynamodb 表执行 crud 操作?

AWS Lambda 中的资源释放

如何使用API 参考对AWS Lambda进行API调用