我正在创建一种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的帮助下创建的:
连接到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函数与本地数据库对话是否还需要其他任何东西吗?
答案 0 :(得分:2)
由于您使用自己的笔记本电脑作为服务器,因此不能使用这样的服务器名称。可从本地网络识别“ LT-CMU352CCM5”(当您在本地运行功能时,这是您的连接有效),但不能从互联网识别。数据库必须从互联网上可见。您必须提供公共IP,并将路由器设置为将来自Internet(端口1433)的流量转发到笔记本电脑(查看特定路由器型号的端口转发)。另外,还必须将防火墙设置为允许传入流量,同时还要设置SQL Server(在SQL Server配置管理器中打开TCP / IP和命名管道协议)。
由于您未使用RDS,因此不必将Lambda函数放在安全组中,只需转到AWS账户的Lambda部分,选择适当的Lambda函数,然后在Network部分中进行操作即可。 Lambda函数选择适当的VPC,子网和安全组。
问题在于您的设置有时会更改您的IP地址,因此每次发生时都必须更改Lambda函数。我敦促您重新考虑将本地便携式计算机用作DB服务器,以备将来要公开使用。