实战案例 | 使用 Amazon EventBridge 自动化 Batch 作业流程


  项目需求

某大数据分析公司每天需要运行大量 ETL 批处理作业,这些作业通过 AWS Batch 调度执行,作业完成后的后续流程靠人工触发。当前流程为,手动检查 Batch 控制台,确认作业成功后,再分别通知下游系统、归档日志、更新仪表盘。这种方式不仅效率低下,还经常因人工遗漏导致数据延迟。公司业务团队希望 Batch 作业完成后,自动触发后续所有流程。

  解决方案

利用 Batch 作业完成时发送到 CloudWatch Events 的状态变更事件,通过 EventBridge 规则精准捕获 SUCCEEDED 和 FAILED 两种状态,再分别路由到不同的下游目标。这样,作业成功后自动触发数据同步和通知,作业失败后自动触发告警和重试流程,实现真正的端到端自动化。

  作业步骤

本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。

步骤一:创建 Batch 作业队列与任务定义。
登录 AWS Batch 控制台,创建计算环境(选择 Fargate,最大 16 vCPU),创建作业队列 etl-queue,再创建任务定义,容器命令设为 etl_job.py,记录作业定义 ARN。

步骤二:提交测试作业。
在 Batch 控制台提交一个测试作业到 etl-queue,等待其完成,确保能产生 SUCCEEDED 状态事件。

步骤三:创建 EventBridge 规则。
打开 EventBridge 控制台,点击"创建规则"。事件源选择 AWS 服务 → Batch,事件类型选 Batch Job State Change,状态选 SUCCEEDED。目标选 EventBridge 事件总线(默认),事件详情填入 {"source":"batch","status":"succeeded","jobId":""}。再创建第二条规则,捕获 FAILED 状态,目标指向 SNS 主题用于发送告警邮件。

步骤四:配置下游自动化。
创建一个 EventBridge 规则,事件模式匹配来自 Batch 的 succeeded 事件,目标选择 AWS Step Functions,启动一个数据同步工作流;另建一条规则匹配同样事件,目标选择 SNS Topic,推送通知到数据团队。

  结果验证

1. 提交一个 Batch 作业,作业完成后刷新 EventBridge 控制台,可见规则被成功触发,CloudWatch 中显示事件投递记录。
2. Step Functions 控制台中数据同步工作流自动开始执行,SNS 主题成功向数据团队发送了"ETL 作业已完成"的通知邮件。
3. 手动模拟一个失败作业,EventBridge 立刻捕获 FAILED 事件,告警邮件在 10 秒内送达运维团队。