python - 我在 AWS Lambda 服务中使用 Python SQLAlchemy 时遇到问题

标签 python amazon-web-services aws-lambda

代码在虚拟环境中运行良好,并且我正在使用所有依赖项正确部署代码,但是当我的代码尝试使用 SQLAlchemy 执行 SQL 原始查询时,我得到了这个

{
"stackTrace": [
[
  "/var/task/aws_handler.py",
  13,
  "twilio_handler",
  "sms_bot.handle_communication(message_body, recipient)"
],
[
  "/var/task/sms_bot.py",
  86,
  "handle_communication",
  "is_authenticated, user_id = self.authenticate_user(recipient)"
],
[
  "/var/task/sms_bot.py",
  38,
  "authenticate_user",
  "result = execute_query(query)"
],
[
  "/var/task/db_handler.py",
  28,
  "execute_query",
  "connection = get_db_connection()"
],
[
  "/var/task/db_handler.py",
  19,
  "get_db_connection",
  "return get_sqlalchemy_engine().connect()"
],
[
  "/var/task/db_handler.py",
  11,
  "get_sqlalchemy_engine",
  "return create_engine(SQLALCHEMY_DATABASE_URI)"
],
[
  "/var/task/sqlalchemy/engine/__init__.py",
  386,
  "create_engine",
  "return strategy.create(*args, **kwargs)"
],
[
  "/var/task/sqlalchemy/engine/strategies.py",
  75,
  "create",
  "dbapi = dialect_cls.dbapi(**dbapi_args)"
],
[
  "/var/task/sqlalchemy/dialects/mysql/mysqldb.py",
  92,
  "dbapi",
  "return __import__('MySQLdb')"
],
[
  "/var/task/MySQLdb/__init__.py",
  19,
  "<module>",
  "import _mysql"
]
  ],
   "errorType": "ImportError",
   "errorMessage":
   "libmysqlclient.so.20: cannot open shared object  file: No such 

    file or directory"}

注意:SQL_URI 正确且在本地工作

最佳答案

我找到了解决方案,已安装

libmysqlclient-dev

在我的电脑上并复制

libmysqlclient.so.20

来自

/usr/lib/x86_64-linux-gnu/

到我的aws部署包,将权限更改为777,压缩所有文件并上传到aws。它起作用了。

关于python - 我在 AWS Lambda 服务中使用 Python SQLAlchemy 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263581/

相关文章:

python - 如何在AWS-CDK中获取EC2实例的ARN

python - 在 Python 中检查两个集合是否相等的时间复杂度

amazon-web-services - 如何使用现有VPC创建aws_instance?

go - Go例程AWS lambda

amazon-web-services - 将 aws lambda 函数作为服务目录产品调用是一个好习惯吗?

python - 在 Python 中通过指针接收参数

Python 请求发布一个文件

amazon-web-services - 如何通过向 Lambda 函数发送 API 请求来安排 EC2 实例在特定时间启动?

python - 使用 Route53 通过 boto 更新 DNS。我应该使用名称还是 CNAME 以及要使用的 TTL

amazon-web-services - API Gateway VPC 链接集成到 NLB 提供 404