连接到本地数据库的AWS Lambda pymssql错误

时间:2018-06-21 07:06:45

标签: amazon-web-services aws-lambda pymssql

我正在创建一种Alexa技能,以便根据要求从本地数据库中获取一些信息。我正在运行SQLServer 2008,并且可以在本地运行代码时使用pymssql库提取数据。但是,在使用AWS部署它之后,我看到以下错误:

File "pymssql.pyx", line 644, in pymssql.connect (pymssql.c:10892)
InterfaceError: Connection to the database failed for an unknown reason.

这是我的aws软件包的屏幕截图,它是我在Amazon EC2的帮助下创建的:

Screenshot of aws package and code

连接到SQL DB的相关代码如下:

def getDB_response():
    session_attributes = {}
    card_title = "farzi"
    server = 'LT-CMU352CCM5'
    user = 'ss'
    passwd = 'abc@1234'
    DB = 'Market_DB'
    port = '1433'

    conn = pymssql.connect(server, port,user, passwd, DB)
    cursor = conn.cursor()
    cursor.execute('select @@servername')
    row = cursor.fetchone()

有人知道我的aws函数与本地数据库对话是否还需要其他任何东西吗?

1 个答案:

答案 0 :(得分:2)

由于您使用自己的笔记本电脑作为服务器,因此不能使用这样的服务器名称。可从本地网络识别“ LT-CMU352CCM5”(当您在本地运行功能时,这是您的连接有效),但不能从互联网识别。数据库必须从互联网上可见。您必须提供公共IP,并将路由器设置为将来自Internet(端口1433)的流量转发到笔记本电脑(查看特定路由器型号的端口转发)。另外,还必须将防火墙设置为允许传入流量,同时还要设置SQL Server(在SQL Server配置管理器中打开TCP / IP和命名管道协议)。

由于您未使用RDS,因此不必将Lambda函数放在安全组中,只需转到AWS账户的Lambda部分,选择适当的Lambda函数,然后在Network部分中进行操作即可。 Lambda函数选择适当的VPC,子网和安全组。

问题在于您的设置有时会更改您的IP地址,因此每次发生时都必须更改Lambda函数。我敦促您重新考虑将本地便携式计算机用作DB服务器,以备将来要公开使用。