pymssql 包不适用于 aws 中的 lambda
Posted
技术标签:
【中文标题】pymssql 包不适用于 aws 中的 lambda【英文标题】:pymssql package does not work with lambda in aws 【发布时间】:2016-06-01 11:06:20 【问题描述】:我们如何为 lambda 创建一个 pymssql 包。我尝试使用创建它 点安装 pymssql -t 。当我运行我的 lambda 函数时,它抱怨说 无法导入模块“lambda_function”:没有名为 lambda_function 的模块
我按照此链接上的步骤操作 http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
我有一台windows机器
【问题讨论】:
pymssql 依赖于 freetds。您必须在 AMI 上构建 freetds 并将其包含在您的 zip 中。按照这个link 了解如何做到这一点。 【参考方案1】:很高兴它对您有用,您能否分享一下您的工作流程,我也尝试了不同的试错步骤,最后得到了以下在 AWS Lambda 中运行良好的步骤,我只使用 PYMSSQL 包。
1) 在亚马逊 EC2 实例上执行了“pip install pymssql”,因为亚马逊在后台使用 Linux AMI 来运行其 Lambda 函数。
2) 复制生成的 .so 文件并打包在 Lambda 部署包中,希望这将有助于其他正在寻找解决方案的人。
希望这能进一步帮助您,您能否分享一下您使用 AWS Lambda 连接到 MSSQL 服务器所做的工作。
下面是我的 lambda 部署包的文件夹结构
【讨论】:
【参考方案2】:我终于可以做到了。它不适用于 windows 包,所以使用 ubuntu 来打包 freetds.so 文件,它可以工作。
【讨论】:
【参考方案3】:AWS lambda 不支持 Windows“pymssql”文件,因为 lambda 在 Amazon Linux 2 上运行。
所以我们可以从以下官方“pymssql”网站download link获取Linux支持的wheel文件。您查找具有所需 python 版本的“manylinux_2_24_x86_64”版本文件。在撰写本文时,python 3.9 是最新版本。所以下载文件将是“pymssql-2.2.2-cp39-cp39-manylinux_2_24_x86_64.whl”。
下载wheel文件后执行以下命令
pip install path of downloaded wheel file -t target folder to store this package
例子
pip install pymssql-2.2.2-cp39-cp39-manylinux_2_24_x86_64.whl -t /package
【讨论】:
【参考方案4】:与pymssql
一起尝试import cypthon
。
【讨论】:
【参考方案5】:只是对新更改的快速更新。
python 3.9 AWS lambda 似乎存在一些问题,它在pymssql==2.2.3.
上引发以下错误
"errorMessage": "Unable to import module 'index': No module named
'pymssql._pymssql'",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
但如果我将 python 版本更改为 3.8,错误就会消失。
【讨论】:
似乎不起作用:(以上是关于pymssql 包不适用于 aws 中的 lambda的主要内容,如果未能解决你的问题,请参考以下文章
雪花 python 连接器不适用于 AWS Lambda 中的更大数据集
Twitter CRC Challenge 不适用于 AWS Lambda/API 网关
dotnet发布命令不适用于aws buildspecs.yml文件中的asp dotnet项目