如何使用python在AWS lambda中查询RDS SQL Server数据库?

问题描述 投票:0回答:3

我正在尝试使用 python 脚本连接到 AWS RDS SQL Server 实例以从 AWS Lambda 查询表。但是,我没有看到任何 AWS api,因此当我尝试使用“import pyodbc”时,会看到以下错误。

无法导入模块“lambda_function”:没有名为“pyodbc”的模块

连接:

 cnxn = pyodbc.connect("Driver={SQL Server};"
                        "Server=data-migration-source-instance.asasasas.eu-east-1.rds.amazonaws.com;"
                        "Database=sourcedb;"
                        "uid=source;pwd=source1234")

关于如何查询RDS SQL Server有什么要点吗?

python aws-lambda amazon-rds
3个回答
2
投票

您收到的错误意味着 lambda 没有

pyodbc
模块。

您应该阅读 AWS Lambda 中的依赖关系管理。基本上有两种策略可以在部署中包含依赖项 - Lambda Layers 或使用 部署包 进行压缩。

如果您使用 Serverless Framework,那么

Serverless-python-requirements
是一个用于管理依赖项的优秀软件包,可让您选择依赖项管理策略,同时对应用程序进行最小的更改。


1
投票

您需要将 lambda 的依赖项与代码一起上传。如果您手动部署 lambda(即直接从控制台创建 zip 文件),则需要附加

pyodb
库。 (更多信息请参见此处:https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependency)。

如果您使用任何其他部署工具(无服务器、SAM、chalice),则会更容易:https://www.serverless.com/plugins/serverless-python-requirementshttps://aws .github.io/chalice/topics/packaging.html#rd-party-packageshttps://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using -build.html


0
投票

这是我的 github 存储库,其中自动构建了适用于 Python 3.11 和 3.12 的 ODBC 18 驱动程序。适用于 x86_64 和 ARM64 的预构建包和 Dockerfile

https://github.com/davidcomerford/pyodbc-mssql-lambda-layer

我喜欢从 Amazon 存储库中获取最新版本的 unixodbc。这感觉比其他人的固定版本、安全性、错误修复等安全得多。

© www.soinside.com 2019 - 2024. All rights reserved.