

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自动作业重试
<a name="job_retries"></a>

您可以将重试策略应用于作业和作业定义，这将允许失败的作业自动重试。可能的失败场景包括以下情况：
+ 来自容器作业的任何非零退出代码
+ Amazon EC2 实例失败或终止
+ 内部 AWS 服务错误或中断

在将作业提交到作业队列并置于 `RUNNING` 状态时，将视为一次尝试。默认情况下，每个作业均可尝试移至 `SUCCEEDED` 或 `FAILED` 作业状态一次。不过，作业定义和作业提交工作流都可以用来指定一个具有 1 至 10 次尝试的重试策略。如果[evaluateOnExit](job_definition_parameters.md#retryStrategy-evaluateOnExit)已指定，则它最多可以包含 5 个重试策略。如果[evaluateOnExit](https://docs.aws.amazon.com/batch/latest/APIReference/API_EvaluateOnExit.html)已指定，但所有重试策略都不匹配，则会重试该作业。对于与退出不匹配的作业，请添加因任何原因退出的最终条目。例如，此 `evaluateOnExit` 对象有两个操作为 `RETRY` 的条目，和一个操作为 `EXIT` 的最后一个条目。

```
"evaluateOnExit": [
    {
        "action": "RETRY",
        "onReason": "AGENT"
    },
    {
        "action": "RETRY",
        "onStatusReason": "Task failed to start"
    },
    {
        "action": "EXIT",
        "onReason": "*"
    }
]
```

在运行时，`AWS_BATCH_JOB_ATTEMPT` 环境变量将设置为容器的相应作业尝试次数。第一次尝试的编号为 `1`，后续尝试的编号按升序排列 (2、3、4，以此类推)。

例如，假设作业尝试因任何原因失败，并且重试配置中指定的尝试次数大于 `AWS_BATCH_JOB_ATTEMPT` 数。则该作业被放回 `RUNNABLE` 状态。有关更多信息，请参阅 [任务状态](job_states.md)。

**注意**  
不会重试已取消或终止的作业。此外，也不会重试因作业定义无效而导致失败的作业。

有关更多信息，请参阅 [重试策略](job_definition_parameters.md#retryStrategy)、[创建单节点作业定义](create-job-definition.md)、[教程：提交作业](submit_job.md) 和[已停止的任务错误代码](https://docs.aws.amazon.com/AmazonECS/latest/userguide/stopped-task-error-codes.html)。