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

AWS Lambda函数无法找到rpds模块问题求助

解决AWS Lambda无法识别rpds模块的问题

问题根源

rpds-py是基于Rust开发的Python绑定模块,属于二进制扩展类依赖,它的运行依赖与Lambda运行环境完全匹配的编译架构和系统环境。如果直接在本地(比如Windows、Mac)安装后打包,生成的二进制文件无法在Lambda的Amazon Linux环境中运行,会导致模块找不到的错误。而jsonschema是纯Python模块,所以不受这个限制。

具体解决步骤

1. 使用Lambda兼容环境打包Layer

Lambda的运行环境是Amazon Linux 2(或Amazon Linux 2023),推荐用Docker模拟该环境来安装依赖,确保二进制文件兼容:

# 以Python 3.11、x86_64架构为例,拉取官方SAM构建镜像
docker run -v "$(pwd)":/var/task public.ecr.aws/sam/build-python3.11:latest /bin/bash

# 进入容器后,创建并激活虚拟环境
python -m venv venv
source venv/bin/activate

# 创建Layer要求的文件夹结构,安装依赖
mkdir -p python/lib/python3.11/site-packages/
pip install jsonschema rpds-py -t python/lib/python3.11/site-packages/

# 退出容器(按Ctrl+D),打包python文件夹为Layer压缩包
zip -r rpds-jsonschema-layer.zip python/

2. 验证Layer结构

解压打包好的zip包,确认路径为python/lib/pythonX.X/site-packages/,且该目录下存在rpds文件夹,里面包含对应架构的.so二进制文件(比如rpds.cpython-311-x86_64-linux-gnu.so)。如果缺少该文件,说明安装过程出错,需重新在容器内执行安装命令。

3. 匹配Lambda运行时与架构

  • 确保Lambda函数的Python运行时版本(比如3.11)和打包时使用的版本完全一致;
  • 确认Lambda的架构(x86_64/arm64)与打包时的环境匹配:如果用上述Docker镜像,默认是x86_64;若需要arm64架构,替换镜像为public.ecr.aws/sam/build-python3.11:arm64-latest。

4. 直接打包Lambda函数的替代方案

如果不想用Layer,同样需要在兼容环境下安装依赖,然后将lambda_function.py和site-packages下的所有依赖文件一起打包,注意不要包含虚拟环境的venv文件夹,只保留依赖和函数代码。

错误排查要点

  • 检查Layer是否正确关联到Lambda函数;
  • 查看Lambda的环境变量PYTHONPATH是否包含Layer的路径(Lambda会自动加载Layer的site-packages到PYTHONPATH,无需手动配置,但可以在测试时打印sys.path确认)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:13:07