使用重启状态机执行 redrive 在 Step Functions - AWS Step Functions

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

使用重启状态机执行 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 重新运行任务状态的执行,该状态TimeoutSeconds的(如果已定义)将重置为 0。有关超时的更多信息,请参阅 Task 状态

Choice 工作流程状态 重新评估 Choice 状态规则。
Wait 工作流程状态

如果状态指定TimestampTimestampPath表示过去的时间戳,redrive 退出 “等待” 状态并进入Next字段中指定的状态。

Succeed 工作流程状态

不是 redrive 状态进入成功状态的机器执行。

Fail 工作流程状态

重新进入 Fail 状态并再次失败。

Parallel 工作流程状态

重新安排和 redrives 只有那些失败或中止的分支。

如果状态由于 States.DataLimitExceeded 错误而失败,则会重新运行 Parallel 状态,包括在原始执行尝试中成功的分支。

内联 Map 状态

重新安排和 redrives 只有那些失败或中止的迭代。

如果状态由于 States.DataLimitExceeded 错误而失败,则会重新运行内联 Map 状态,包括在原始执行尝试中成功的迭代。

分布式 Map 状态

redrives Map Run 中执行的子工作流程失败。有关更多信息,请参阅 在 Step Functions 执行中Redriving Map Run

如果状态因 States.DataLimitExceeded 错误而失败,则重新运行分布式 Map 状态。这包括在原始执行尝试中成功的子工作流。

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 状态也失败。正在执行或未启动的分支将停止,状态机执行失败。

失败的状态机执行的示例图。
目的 redrive 从控制台执行
  1. 打开 Step Functions 控制台,然后选择执行失败的现有状态机。

  2. 在状态机详细信息页面的执行下,选择一个失败的执行实例。

  3. 选择 Redrive.

  4. Redrive对话框中,选择 Redrive 处决

    提示

    如果您在执行失败的执行详情页面上,请执行以下任一操作 redrive 处决:

    • 选择 “恢复”,然后选择 Redrive 从失败开始

    • 选择 “操作”,然后选择 Redrive.

    请注意 redrive 使用相同的状态机定义和ARN。它从原始执行失败的步骤开始继续执行。在这个例子中,这里的步骤是 Parallel 状态下的 Do square number 步骤和 Wait 3 sec 分支。在 “并行” 状态下重新开始执行这些不成功的步骤后,redrive 将继续执行 “完成” 步骤。

  5. 选择该执行,打开执行详细信息 页面。

    在此页面上,您可以查看结果 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:GetExecutionHistoryDescribeExecution

检查 redriven 在主机上执行
  1. 打开 Step Functions 控制台,然后选择一台已安装的现有状态机 redriven 处决。

  2. 打开执行详细信息 页面。

    在此页面上,您可以查看结果 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 执行,您可以使用控制台跟踪这些状态的单个重试尝试。

在控制台中检查单个重试尝试
  1. Step Functions 控制台的 “执行详情” 页面上,选择重试过的状态 redrive.

  2. 选择 “重试次数” 和 redrives选项卡。

  3. 选择每次重试尝试旁边的箭头键来查看其详细信息。如果重试尝试成功,则可以在下拉框中显示的 输出 中查看结果。

下图显示了在原始执行尝试中对某个状态执行的重试的示例,以及 redrives 关于那次处决的情况。在这张图片中,在原始镜像中进行了三次重试 redrive 执行尝试。第四次执行成功 redrive 尝试并返回 16 的输出。

说明性屏幕截图显示了三次失败的重试和第四次重试成功。