You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Step Functions重试失败Glue Job的问题排查与实现

问题分析与解决方案

问题原因

你当前使用的arn:aws:states:::glue:startJobRun属于异步调用模式:Step Functions仅验证Glue Job是否成功启动,不会等待Job执行完成。只要Job启动成功,这个Task状态就会被标记为成功,后续Job运行时出现的FAILED或TIMEOUT状态,Step Functions无法感知,因此不会触发你配置的Retry逻辑。

解决方案

将Task的Resource替换为同步调用ARN:arn:aws:states:::glue:startJobRun.sync。同步模式下,Step Functions会持续等待Glue Job执行完成,只有当Job执行成功时,Task状态才会成功;若Job出现FAILED或TIMEOUT,Step Functions会捕获对应错误,触发Retry规则。

修改后的状态机配置如下:

{
  "Comment": "A description of my state machine",
  "StartAt": "Glue StartJobRun",
  "States": {
    "Glue StartJobRun": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Parameters": {
        "JobName": "test-to-fail"
      },
      "End": true,
      "Retry": [
        {
          "ErrorEquals": [
            "Glue.JobFailedException",
            "Glue.JobTimeoutException"
          ],
          "MaxAttempts": 2,
          "IntervalSeconds": 300,
          "BackoffRate": 1
        }
      ]
    }
  }
}

补充说明

  • 同步模式下,Step Functions会轮询Glue Job的运行状态,直到Job结束。Job的FAILED或TIMEOUT会转化为Glue.JobFailedException和Glue.JobTimeoutException错误,匹配你配置的ErrorEquals规则后,会自动执行重试逻辑,最多重试2次后结束(若仍失败)。
  • 建议将ErrorEquals从States.ALL改为具体的Glue错误类型,避免无关错误触发重试,提升逻辑精准度。

内容的提问来源于stack exchange,提问作者Laura Galera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:39:53