You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda中导入PyMYSQL报错:找不到pymysql模块

解决AWS Lambda中PyMySQL导入失败及mysql.connector连接超时问题

一、修复PyMySQL模块找不到的问题

不管是直接打包部署还是用Docker部署,核心是确保依赖包被正确包含在Lambda运行环境中:

1. 本地打包时的正确依赖安装方式

不要全局安装PyMySQL,而是将包安装到项目根目录,确保打包时能包含进去:

# 在项目根目录执行,将pymysql安装到当前目录
pip install pymysql -t .

之后将lambda_function.py和所有安装的依赖文件一起打包成ZIP,上传到Lambda。注意不要包含虚拟环境目录(比如venv),只保留必要的代码和依赖。

2. Docker部署的正确配置

如果用Docker部署,确保Dockerfile基于Lambda官方Python镜像,并在构建时安装PyMySQL:

# 使用Lambda官方Python镜像作为基础
FROM public.ecr.aws/lambda/python:3.11

# 将本地代码复制到Lambda的工作目录
COPY lambda_function.py ${LAMBDA_TASK_ROOT}

# 安装PyMySQL依赖
RUN pip install pymysql -t ${LAMBDA_TASK_ROOT}

# 指定Lambda执行入口
CMD ["lambda_function.lambda_handler"]

构建镜像时,确保所有依赖都被正确安装到Lambda任务目录中,避免路径问题导致模块找不到。

二、修复mysql.connector连接超时问题

本地能连接但Lambda在VPC中超时,通常是网络配置或权限问题,按以下步骤排查:

1. 检查安全组配置

  • Lambda安全组:需允许出站流量到MySQL的3306端口(或你的RDS自定义端口)。
  • RDS安全组:需允许入站流量来自Lambda的安全组,端口为MySQL服务端口(默认3306)。

2. 确认VPC子网与路由配置

  • 如果RDS部署在私有子网:Lambda需部署在同一个VPC的子网中,且Lambda子网的路由表需包含到RDS子网的路由(通过VPC内部路由,无需NAT网关)。
  • 如果RDS是公网可访问:若Lambda部署在私有子网,需为该子网配置NAT网关,确保Lambda能访问公网;若Lambda在公有子网,需开启Lambda的"自动分配公有IP"选项。

3. 验证IAM角色权限

虽然配置了AWSLambdaVPCAccessExecutionRole,需确认角色包含以下必要权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}

这些权限是Lambda在VPC中创建网络接口的必要条件,缺失会导致网络连接异常。

4. 检查RDS端点与连接参数

确保Lambda代码中使用的RDS端点、端口、用户名、密码与本地测试一致,避免拼写错误或配置不一致导致的连接失败。

内容的提问来源于stack exchange,提问作者Lars Jacobs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:52:04