本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用重启状态机执行 redrive 在 Step Functions
您可以使用 … redrive 重新启动在过去 14 天内未成功完成的标准工作流程的执行。其中包括执行失败、中止或超时的执行。
在 redrive 执行后,Step Functions 会继续执行失败步骤中失败的执行并使用相同的输入。Step Functions 保留成功步骤的结果和执行历史记录,这些步骤在您执行时不会重新运行 redrive 处决。例如,假设您的工作流包含两个状态:一个Pass 工作流程状态 状态,后跟一个 Task 工作流程状态 状态。如果您的工作流程执行在 “任务” 状态下失败,而您 redrive 执行、执行会重新安排,然后重新运行任务状态。
Redriven 执行使用的状态机定义和执行方式与最初执行ARN尝试使用的状态机定义和执行相同。如果您最初的执行尝试与版本、别名或两者都相关联,那么 redriven 执行与相同的版本、别名或两者兼而有之。即使你更新别名以指向其他版本,redriven 执行将继续使用与原始执行尝试关联的版本。因为 redriven 执行使用相同的状态机定义,如果更新状态机定义,则必须开始新的执行。
在 redrive 执行时,状态机级别的超时(如果已定义)将重置为 0。有关状态机级别超时的更多信息,请参阅 TimeoutSeconds
。
Execution redrives 被视为状态转换。有关状态转换如何影响计费的信息,请参阅 Step Functions 定价
Redrive 处决失败的资格
你可以 redrive 如果您的初始执行尝试满足以下条件,则执行:
-
在 2023 年 11 月 15 日或之后启动执行。您在此日期之前开始的处决不符合资格 redrive.
-
执行状态不是
SUCCEEDED
。 -
工作流程执行量未超过 redrivable 为期 14 天。Redrivable 时间段是指在这段时间内你可以做到 redrive 给定的处决。这段时间从状态机完成执行的当天开始计算。
-
工作流执行未超过一年的最长开放时间。有关状态机执行配额的信息,请参见与状态机执行相关的配额。
-
执行事件历史记录计数小于 24,999。Redriven 执行会将其事件历史记录附加到现有的事件历史记录中。确保您的工作流执行包含少于 24,999 个事件,从而可以容纳
ExecutionRedriven
历史事件和至少一个其他历史事件。
Redrive 个别国家的行为
根据工作流程中失败的状态,redrive 所有不成功状态的行为各不相同。下表描述了 redrive 所有州的行为。
状态名称 | Redrive 执行行为 |
---|---|
Pass 工作流程状态 |
如果前面的步骤失败或状态机超时,则会退出 Pass 状态且不会在上执行 redrive. |
Task 工作流程状态 |
重新安排和启动 Task 状态。 在 redrive 重新运行任务状态的执行,该状态 |
Choice 工作流程状态 | 重新评估 Choice 状态规则。 |
Wait 工作流程状态 |
如果状态指定 |
Succeed 工作流程状态 |
不是 redrive 状态进入成功状态的机器执行。 |
Fail 工作流程状态 |
重新进入 Fail 状态并再次失败。 |
Parallel 工作流程状态 |
重新安排和 redrives 只有那些失败或中止的分支。 如果状态由于 |
内联 Map 状态 |
重新安排和 redrives 只有那些失败或中止的迭代。 如果状态由于 |
分布式 Map 状态 |
redrives Map Run 中执行的子工作流程失败。有关更多信息,请参阅 在 Step Functions 执行中Redriving Map Run。 如果状态因 |
IAM允许 redrive 处决
Step Functions 需要适当的权限才能 redrive 处决。以下IAM策略示例授予您的状态机所需的最低权限 redriving 处决。请记住用您的资源特定信息替换italicized
文本。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:
us-east-2
:123456789012
:execution:myStateMachine
:*" } ] }
举个你需要的权限示例 redrive a Map Run,请参阅redriving分布式 Map 的 IAM 策略示例。
Redriving 在控制台中执行
你可以 redrive 符合条件的处决 Step Functions console。
例如,假设您运行一个状态机,而 Parallel 状态运行失败。
下图显示了 Lambda 在并行状态下调用名为 Do squar e number 的步骤已返回但失败。这导致了 Parallel 状态也失败。正在执行或未启动的分支将停止,状态机执行失败。
![失败的状态机执行的示例图。](images/redrive-eg-failed-workflow.png)
目的 redrive 从控制台执行
-
打开 Step Functions 控制台
,然后选择执行失败的现有状态机。 -
在状态机详细信息页面的执行下,选择一个失败的执行实例。
-
选择 Redrive.
-
在 Redrive对话框中,选择 Redrive 处决。
提示
如果您在执行失败的执行详情页面上,请执行以下任一操作 redrive 处决:
-
选择 “恢复”,然后选择 Redrive 从失败开始。
-
选择 “操作”,然后选择 Redrive.
请注意 redrive 使用相同的状态机定义和ARN。它从原始执行失败的步骤开始继续执行。在这个例子中,这里的步骤是 Parallel 状态下的 Do square number 步骤和 Wait 3 sec 分支。在 “并行” 状态下重新开始执行这些不成功的步骤后,redrive 将继续执行 “完成” 步骤。
-
-
选择该执行,打开执行详细信息 页面。
在此页面上,您可以查看结果 redriven 处决。例如,在该执行摘要部分中,你可以看到 Redrive count,它表示执行的次数 redriven。 在 “活动” 部分,你可以看到 redrive 相关的执行事件附加到原始执行尝试的事件之后。有关示例,请参阅
ExecutionRedriven
事件。
Redriving 使用处决 API
你可以 redrive 使用@@ 符合条件的处决RedriveExecutionAPI。这将API重新启动失败、中止或超时的步骤中不成功执行的标准工作流程。
在 AWS Command Line Interface (AWS CLI) 中,运行以下命令以 redrive 状态机执行失败。请记住用您的资源特定信息替换italicized
文本。
aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:
123456789012
:execution:myStateMachine
:foo
正在检查 redriven 处决
你可以检查一个 redriven 在控制台中执行或使用APIs:GetExecutionHistory和DescribeExecution。
检查 redriven 在主机上执行
-
打开 Step Functions 控制台
,然后选择一台已安装的现有状态机 redriven 处决。 -
打开执行详细信息 页面。
在此页面上,您可以查看结果 redriven 处决。例如,在该执行摘要部分中,你可以看到 Redrive count,它表示执行的次数 redriven。 在 “活动” 部分,你可以看到 redrive 相关的执行事件附加到原始执行尝试的事件之后。有关示例,请参阅
ExecutionRedriven
事件。
检查 redriven 使用处决 APIs
如果你有 redriven 状态机执行,您可以使用以下选项之一APIs来查看有关状态机的详细信息 redriven 处决。请记住用您的资源特定信息替换italicized
文本。
-
GetExecutionHistory — 以事件列表的形式返回指定执行的历史记录。这API还会返回有关以下内容的详细信息 redrive 尝试执行死刑(如果有)。
在中 AWS CLI,运行以下命令。
aws stepfunctions get-execution-history --execution-arn arn:aws:states:us-east-2:
123456789012
:execution:myStateMachine
:foo
-
DescribeExecution — 提供有关状态机执行的信息。这可以是与执行、执行输入和输出、执行相关的状态机 redrive 详细信息(如果有)以及相关的执行元数据。
在中 AWS CLI,运行以下命令。
aws stepfunctions describe-execution --execution-arn arn:aws:states:us-east-2:
123456789012
:execution:myStateMachine
:foo
的重试行为 redriven 处决
如果您的 redriven 执行会重新运行Task 工作流程状态Parallel 工作流程状态、或 Inline Map 状态(您已为其定义了重试次数),这些状态的重试尝试次数将重置为 0 以允许最大尝试次数 redrive。 对于 redriven 执行,您可以使用控制台跟踪这些状态的单个重试尝试。
在控制台中检查单个重试尝试
-
在 Step Functions 控制台
的 “执行详情” 页面上,选择重试过的状态 redrive. -
选择 “重试次数” 和 redrives选项卡。
-
选择每次重试尝试旁边的箭头键来查看其详细信息。如果重试尝试成功,则可以在下拉框中显示的 输出 中查看结果。
下图显示了在原始执行尝试中对某个状态执行的重试的示例,以及 redrives 关于那次处决的情况。在这张图片中,在原始镜像中进行了三次重试 redrive 执行尝试。第四次执行成功 redrive 尝试并返回 16 的输出。
![说明性屏幕截图显示了三次失败的重试和第四次重试成功。](images/task-retry-redrive.png)