首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL server连接从lambda容器运行良好,但在将zip上载到aws lambda后失败。

SQL server连接从lambda容器运行良好,但在将zip上载到aws lambda后失败。
EN

Stack Overflow用户
提问于 2020-05-25 11:28:38
回答 2查看 705关注 0票数 0

我跟踪媒体博客,试图通过lambda函数建立到MSSQL的连接。我使用lambci/lambda:build-python3.8映像来构建容器。我遵循了上述所有步骤,并成功地运行了验证连接的python测试脚本。

下面是容器内zip文件的内容。

但是,当我将其压缩并上传到lambda时,我会收到以下错误。

代码语言:javascript
复制
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

代码语言:javascript
复制
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()

奥丁斯特

代码语言:javascript
复制
[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中存在。

代码语言:javascript
复制
arr = os.listdir('/var/task/msodbcsql/lib64')
print(arr)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-26 09:18:23

最后,经过几天的挠头,我终于解决了这个问题。对于任何面临类似问题的人,请按照以下步骤操作。

  1. 尝试使用python-3.7。对我来说是7岁,而不是8岁。
  2. 使用msodbcsql17而不是msodbcsql
  3. 使用unixODBC 2.3.7 这里
  4. 将odbc、obdcinst配置文件中的驱动程序信息更改为ODBC Driver 17 for SQL Server.

在完成所有这些工作之后,我能够将其压缩并成功地部署到aws lambda中。

希望它能帮到别人!!

票数 0
EN

Stack Overflow用户

发布于 2020-11-26 11:26:03

对于任何想下载层压缩文件的人,我可以确认它只在python3.8 3.7中工作,而在python3.8 3.8中不起作用。您可以在此图层压缩文件中找到详细信息和线程

如果您正在寻找python3.8lambda层,请检查此存储库

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62001501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档