我正在尝试使用 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有什么要点吗?
您收到的错误意味着 lambda 没有
pyodbc
模块。
您应该阅读 AWS Lambda 中的依赖关系管理。基本上有两种策略可以在部署中包含依赖项 - Lambda Layers 或使用 部署包 进行压缩。
如果您使用 Serverless Framework,那么
Serverless-python-requirements
是一个用于管理依赖项的优秀软件包,可让您选择依赖项管理策略,同时对应用程序进行最小的更改。
您需要将 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-requirements、https://aws .github.io/chalice/topics/packaging.html#rd-party-packages,https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using -build.html
这是我的 github 存储库,其中自动构建了适用于 Python 3.11 和 3.12 的 ODBC 18 驱动程序。适用于 x86_64 和 ARM64 的预构建包和 Dockerfile
https://github.com/davidcomerford/pyodbc-mssql-lambda-layer
我喜欢从 Amazon 存储库中获取最新版本的 unixodbc。这感觉比其他人的固定版本、安全性、错误修复等安全得多。