AWS Lambda调用SQS死信队列重驱任务报AttributeError异常
解决AWS Lambda中调用SQS start_message_move_task报AttributeError的问题
问题原因
Lambda环境中的botocore版本大概率低于本地环境。start_message_move_task的API实现由botocore提供,即使boto3版本显示为1.34.9,若botocore版本未达到支持该接口的要求(对应boto3 1.34.44所需的botocore版本),就会出现找不到方法的错误。而你的本地环境中,botocore版本刚好满足要求,所以代码能正常执行。
解决方案
1. 打包自定义boto3/botocore到Lambda层
- 本地创建Python 3.8虚拟环境并安装符合要求的依赖:
python3.8 -m venv lambda-env source lambda-env/bin/activate pip install boto3>=1.34.44 botocore>=1.34.44 deactivate - 进入
lambda-env/lib/python3.8/site-packages目录,将所有文件打包为ZIP包,创建Lambda层并关联到你的目标函数。
2. 升级Lambda Python运行时版本
Lambda的Python 3.9及以上版本默认携带的boto3版本更高,比如Python 3.10默认的boto3版本通常在1.34.44以上,直接切换运行时版本即可解决依赖版本问题,无需额外打包依赖。
3. 验证运行环境的依赖版本
在Lambda函数中添加以下代码,打印实际运行环境的boto3和botocore版本,确认版本是否匹配:
import boto3 import botocore print(f"boto3版本: {boto3.__version__}") print(f"botocore版本: {botocore.__version__}")
内容的提问来源于stack exchange,提问作者eduardosufan
相关产品推荐
相关产品推荐

