在AWS Lambda调用Rekognition的create_face_liveness_session报错求助
解决Rekognition调用create_face_liveness_session()出现AttributeError的问题
问题根源
你碰到的AttributeError: 'Rekognition' object has no attribute 'create_face_liveness_session'错误,核心原因是当前Lambda运行环境里的Boto3版本太低,不支持这个新的人脸活体检测API方法。
create_face_liveness_session是Rekognition较新推出的接口,只有Boto3版本≥1.26.0(对应botocore版本≥1.29.0)的环境才会包含这个方法。但Lambda默认运行时(比如Python 3.9/3.10)预装的Boto3版本往往还没更新到这个要求。
解决方案
1. 用Lambda层部署新版Boto3
- 本地建Python虚拟环境,安装指定版本的Boto3:
python -m venv boto3-layer source boto3-layer/bin/activate pip install boto3>=1.26.0 -t python/lib/pythonX.X/site-packages/ # 把X.X换成你Lambda用的Python版本,比如3.9 - 把
python目录打包成zip,上传到Lambda层,再关联到你的函数上。
2. 使用Lambda容器镜像
如果需要更灵活的依赖管理,可以自己构建包含最新Boto3的容器镜像:
- 写Dockerfile指定基础镜像,安装最新Boto3:
FROM public.ecr.aws/lambda/python:3.11 COPY requirements.txt . RUN pip install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" COPY app.py ${LAMBDA_TASK_ROOT} CMD ["app.lambda_handler"] - 在
requirements.txt里加boto3>=1.26.0,然后构建镜像推送到ECR,配置Lambda用这个镜像。
3. 先验证客户端版本
在代码里加几行检查当前Boto3版本和可用方法:
import boto3 print("Boto3版本:", boto3.__version__) client = boto3.client('rekognition') print("Rekognition客户端可用方法:", dir(client))
运行后看输出的版本号,如果低于1.26.0,肯定要升级依赖。
额外提醒
- 确保你的Lambda执行角色有
rekognition:CreateFaceLivenessSession权限,不然解决版本问题后可能会碰到权限错误。 - 确认你的AWS区域支持人脸活体检测服务,不是所有区域都能用到这个功能。
内容的提问来源于stack exchange,提问作者Horlaitan15
相关产品推荐
相关产品推荐

