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

AWS Lambda轮换RDS PostgreSQL密钥报错:无法导入pg模块

解决AWS Lambda Secrets Manager PostgreSQL旋转函数的pg模块导入错误

问题根源

你的Lambda函数依赖psycopg2(PostgreSQL Python驱动),日志中出现的No module named 'pg'是psycopg2内部依赖缺失导致的误报,本质是没有正确部署兼容Lambda环境的psycopg2依赖包。之前创建的层无效,大概率是依赖包编译环境不兼容或层的打包结构错误。

解决方案

1. 编译兼容Lambda环境的psycopg2依赖

Lambda Python 3.9运行在Amazon Linux 2环境,必须用相同环境编译依赖,避免本地(Windows/macOS)编译的包不兼容。用Docker模拟Lambda环境:

  • 拉取Lambda Python 3.9镜像并进入容器:
    docker run -v "$PWD":/var/task public.ecr.aws/sam/build-python3.9:latest /bin/bash
    
  • 在容器内创建层的标准目录结构并安装依赖:
    mkdir -p python/lib/python3.9/site-packages
    cd python/lib/python3.9/site-packages
    pip install psycopg2-binary==2.9.5 -t .
    
  • 退出容器,打包成层压缩包:
    zip -r psycopg2-layer.zip python/
    

2. 用Terraform部署层并关联到Lambda函数

确保Terraform代码中正确配置层和Lambda的关联,同时检查handler配置(这是常见的隐性错误):

# 创建psycopg2 Lambda层
resource "aws_lambda_layer_version" "psycopg2_layer" {
  filename           = "psycopg2-layer.zip"
  layer_name         = "psycopg2-python39"
  compatible_runtimes = ["python3.9"]
}

# 部署Secrets Manager旋转Lambda函数
resource "aws_lambda_function" "postgres_rotation" {
  filename      = "lambda_function.zip" # 你的旋转函数压缩包
  function_name = "SecretsManagerRDSPostgreSQLRotationSingleUser"
  handler       = "lambda_function.lambda_handler" # 必须与文件名对应,原函数是lambda_function.py
  runtime       = "python3.9"
  role          = aws_iam_role.lambda_rotation_role.arn # 提前创建的IAM角色,需包含Secrets Manager和RDS权限

  layers = [aws_lambda_layer_version.psycopg2_layer.arn]

  # 如果RDS在VPC内,需配置VPC子网和安全组
  # vpc_config {
  #   subnet_ids         = aws_subnet.lambda_subnets.*.id
  #   security_group_ids = [aws_security_group.lambda_sg.id]
  # }
}

3. 排查层无效的常见原因

  • 兼容运行时不匹配:创建层时必须指定python3.9作为兼容运行时,否则Lambda无法识别层内的依赖。
  • 打包结构错误:层的依赖必须放在python/lib/python3.9/site-packages/目录下,直接将依赖放在压缩包根目录会导致Lambda无法加载。
  • Handler配置错误:如果将handler设为function.lambda_handler但你的函数文件名是lambda_function.py,会触发Unable to import module 'function'错误,可能伴随依赖缺失的误报。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:35:16