通过Lambda与EventBridge实现脚本自动化的问题排查
Lambda执行角色权限不足
Lambda的IAM角色需要明确拥有两个关键权限:读取存储脚本的S3桶的s3:GetObject权限,以及写入目标S3文件的s3:PutObject/s3:DeleteObject等权限。检查角色的权限策略,确保资源路径(桶名+前缀)和实际S3资源完全匹配,避免出现权限范围不足的情况。脚本路径或参数解析错误
确认EventBridge传入的JSON格式是否正确,比如是否为{"s3_uri": "s3://your-bucket/path/to/script.ipynb"};同时检查Lambda代码中是否正确从事件对象里提取了S3 URI,有没有出现解析错误(比如漏取字段、URI格式处理不当)。可以在Lambda日志里打印传入的event内容,验证参数是否正确传递。脚本依赖缺失
Sagemaker Notebook环境中安装的第三方依赖(如pandas、特定版本的boto3)在Lambda默认执行环境中可能不存在。需要将脚本依赖的库打包到Lambda部署包,或者通过Lambda层添加所需依赖。可以在Lambda代码里尝试捕获导入错误,或者查看CloudWatch日志里的ModuleNotFoundError类报错。运行环境差异导致脚本逻辑异常
脚本在Notebook中可能依赖本地路径、环境变量或特定配置,但Lambda环境不具备这些条件:- 脚本中使用相对路径(如
./output.csv)时,Lambda的工作目录是/tmp,需确保路径适配; - 检查AWS区域配置,Lambda默认区域和S3桶区域不一致可能导致访问失败;
- 脚本中如果依赖Notebook的某些本地缓存或临时文件,Lambda环境中不存在这些资源会导致执行中断。
- 脚本中使用相对路径(如
脚本执行出错未捕获日志
Lambda被调用不代表脚本成功执行,需查看CloudWatch日志排查具体报错:- 检查是否有未捕获的异常(如数据读取失败、逻辑判断异常);
- 确认脚本中的关键步骤(如数据处理、S3写入)是否被执行,可以在脚本中添加打印日志,追踪执行流程。
Lambda超时设置过短
Lambda默认超时时间为3秒,如果脚本在Notebook中运行时间超过这个时长,Lambda会提前终止脚本执行。查看Lambda的配置页面,将超时时间调整至与脚本实际运行时间匹配(最长可设置15分钟)。S3文件路径或缓存问题
确认脚本写入的S3路径是否与预期一致,是否误写入其他路径;另外S3存在缓存机制,可能更新后的文件需要一段时间才能在控制台显示,可通过AWS CLI或SDK直接查询文件的最后修改时间验证是否更新。
内容的提问来源于stack exchange,提问作者MSS

