如何在不使用Lambda或Step Functions的情况下,在三个PySpark Glue Job成功后触发PyShell Glue Job?
方案二:EventBridge + Lambda 自定义逻辑(灵活扩展方案)
如果需要更复杂的状态判断或扩展需求,可以用EventBridge监听Job状态,结合Lambda实现触发逻辑:
开启Job状态事件通知
在Job1、Job2、Job3的配置页面,开启「Job状态通知」,将SUCCEEDED和FAILED状态的事件发送到EventBridge。编写Lambda触发逻辑
创建Lambda函数,核心逻辑如下:- 用DynamoDB维护每日三个Job的状态记录(确保跨实例状态持久化)
- 收到EventBridge的Job状态事件后,更新对应Job的状态
- 检查三个Job状态:若全部为
SUCCEEDED,调用Glue的start_job_runAPI启动Job4;若有任意一个FAILED,则清空当日状态,不触发Job4 - 给Lambda配置IAM权限:允许读取EventBridge事件、读写DynamoDB、调用Glue Job启动API
配置EventBridge规则
创建EventBridge规则,将三个Job的状态变化事件转发到目标Lambda函数。定时触发前置Job
用EventBridge定时规则分别在8、9、10点触发Job1、Job2、Job3(或保留原有定时配置)。
关键注意事项
- 权限配置:确保各服务间IAM权限正确,比如Glue工作流需要触发Job的权限,Lambda需要调用Glue API的权限
- 状态重置:每日任务需确保状态独立,Glue Workflow会自动隔离每日实例;Lambda+DynamoDB方案需每日清空前一天的状态记录
- 失败告警:可配置CloudWatch告警,在任意前置Job失败时发送通知
内容的提问来源于stack exchange,提问作者priyanka
相关产品推荐
相关产品推荐

