AWS Lambda报错:'Glue'对象无'start_column_statistics_task_run'属性
问题解决:Glue client 无
start_column_statistics_task_run 属性 错误原因
start_column_statistics_task_run 是AWS Glue的新增API操作,你当前Lambda环境中的boto3版本过低,未包含该方法的定义——这也是你在boto3源码中找不到这个函数、调用时报错的核心原因。Lambda默认自带的boto3版本通常滞后于官方最新版本,即使使用Python 3.12运行时也不例外。
解决方案
1. 确认当前boto3版本
先在Lambda函数中添加代码打印当前boto3版本,验证版本是否过旧:
import boto3 print(boto3.__version__)
运行函数后查看日志,若版本低于支持该API的版本(需至少boto3 1.28.0+,对应botocore 1.31.0+),则需要升级。
2. 通过Lambda层升级boto3
这是最常用的解决方案,步骤如下:
- 本地创建目录结构:
python/lib/python3.12/site-packages - 在终端执行命令,将最新版boto3和botocore安装到该目录:
pip install boto3 botocore -t python/lib/python3.12/site-packages --no-user - 将
python目录打包为zip文件(注意zip根目录直接是python文件夹,不要嵌套外层目录) - 登录AWS控制台,进入Lambda层页面,上传这个zip包创建新层,指定兼容运行时为Python 3.12
- 回到你的Lambda函数配置页面,在「层」模块中添加刚才创建的层
3. 使用自定义容器镜像(可选)
如果你的Lambda函数依赖较多第三方库,可以自定义容器镜像:
- 基于AWS提供的Python 3.12 Lambda基础镜像构建
- 在Dockerfile中添加命令安装最新版boto3:
FROM public.ecr.aws/lambda/python:3.12 RUN pip install --upgrade boto3 botocore # 复制你的函数代码到镜像中 COPY app.py ${LAMBDA_TASK_ROOT} CMD ["app.lambda_handler"] - 构建镜像并推送到ECR,然后配置Lambda函数使用该镜像
额外注意事项
- 升级后请确认你的Lambda执行角色拥有
glue:StartColumnStatisticsTaskRun权限,避免后续出现权限错误 - 打包层时要严格对应Python版本,防止出现兼容性问题
内容的提问来源于stack exchange,提问作者ivan
相关产品推荐
相关产品推荐

