SQL服务器连接在lambda容器中工作正常,但是在将zip上传到aws lambda后失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL服务器连接在lambda容器中工作正常,但是在将zip上传到aws lambda后失败相关的知识,希望对你有一定的参考价值。
我正在关注this中等博客,尝试通过lambda函数建立与MSSQL db的连接。我使用了lambci / lambda:build-python3.8镜像来构建容器。我遵循了上面提到的所有步骤,并且能够成功运行验证连接的python测试脚本。
下面是容器内zip文件的内容。
但是,当我将其压缩并上传到lambda时,收到以下错误消息。
START RequestId: 6f3ec44e-aac0-4cc3-b5ed-f8935c4dff4d Version: $LATEST
['bin', 'include', 'lib', 'msodbcsql', 'odbc.ini', 'odbcinst.ini', 'pyodbc.so', 'test.py']
[ERROR] Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/var/task/msodbcsql/lib64/libmsodbcsql-13.1.so.9.2' : file not found (0) (SQLDriverConnect)")
Traceback (most recent call last):
File "/var/lang/lib/python3.8/imp.py", line 234, in load_module
return load_source(name, filename, file)
File "/var/lang/lib/python3.8/imp.py", line 171, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 702, in _load
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/var/task/test.py", line 9, in <module>
conn=pyodbc.connect("DRIVER={ODBC Driver 13 for SQL Server};SERVER=***;PORT=1433;DATABASE=***;UID=***;PWD=***")END RequestId: 6f3ec44e-aac0-4cc3-b5ed-f8935c4dff4d
REPORT RequestId: 6f3ec44e-aac0-4cc3-b5ed-f8935c4dff4d Duration: 1583.04 ms Billed Duration: 1600 ms Memory Size: 128 MB Max Memory Used: 15 MB
Unknown application error occurred
两个环境都使用python -3.8。
test.py
import sys
import logging
import pyodbc
import os
logger=logging.getLogger()
arr = os.listdir('/var/task')
print(arr)
conn=pyodbc.connect("DRIVER={ODBC Driver 13 for SQL Server};SERVER=***;PORT=1433;DATABASE=***;UID=***;PWD=***")
logger.info("SUCCESS: Connection to SQLSever succeeded")
def handler(event,context):
item_count=0
crsr=conn.cursor()
rows=crsr.execute("select @@VERSION").fetchall()
print(rows)
logger.info(rows)
crsr.close()
conn.close()
odbcinst
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/var/task/msodbcsql/lib64/libmsodbcsql-13.1.so.9.2
UsageCount=1
任何人都可以帮助我进行调试。
更新
在下面放入python代码后,我看到该文件存在于lambda中。
arr = os.listdir('/var/task/msodbcsql/lib64')
print(arr)
答案
最后几天我挠头后,我得以解决。对于遇到类似问题的任何人,请按照以下步骤操作。
- 尝试使用python-3.7。它在7而不是8对我有用。
- 使用msodbcsql17代替msodbcsql
- 使用unixODBC 2.3.7 here
- 将odbc,obdcinst配置文件中的驱动程序信息更改为
ODBC Driver 17 for SQL Server.
完成所有这些操作后,我就可以将其压缩并成功部署在AWS Lambda中。
希望它可以帮助某人!
以上是关于SQL服务器连接在lambda容器中工作正常,但是在将zip上传到aws lambda后失败的主要内容,如果未能解决你的问题,请参考以下文章
MQTT 连接在 Node 中工作,但不能作为 ReactJS 组件
Rest api在chrome中返回“网络连接失败”,但在firefox中工作正常
Java JDBC 连接 Integrated Security 只能在我的 Eclipse 中工作