如何在大型 StepFunction 调用中仅显示失败的步骤?

How do I show only the failed steps in a large StepFunction call?

当您 运行 长时间 运行ning 调用包含许多步骤的 Step Functions 时(历史记录中有时有 1000 多个事件),您可能会遇到向下几页的失败在控制台中。我必须一直点击“加载更多”才能看到实际错误。

一定有更好的方法,你是怎么解决的?

为了使这更容易,我们需要使用 AWS CLI。

首先,确保我们可以通过从 Web 控制台复制执行 ARN 并使用它来使用 CLI 显示执行详细信息来列出特定执行:

aws stepfunctions describe-execution --execution-arn <EXECUTION ARN>

回复应如下所示:

{
    "executionArn": "arn:aws:states:us-east-1:123456789012:execution:my-execution-id",
    "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:my-state-machine-name",
    "status": "FAILED",
    "startDate": "2021-10-28T08:31:04.138000+02:00",
    "stopDate": "2021-10-28T08:33:37.471000+02:00",
    "name": "my-execution-name",
    "input": "{\"foo\":\"bar\"}"
}

为了显示执行中的步骤,我们可以使用 CLI 列出执行历史记录。由于我们正在处理具有许多步骤的执行,因此将列表反转并将结果数量限制为更少的数量是明智的,例如 5。

aws stepfunctions get-execution-history --reverse-order --max-items 5 --execution-arn <EXECUTION ARN>

这很可能会向您显示失败的步骤,因为它通常在执行步骤的末尾。

您可以在 step 函数上启用日志记录,然后将 step 函数日志加载到 Log Insights 中,并编写如下查询:

fields @timestamp, @message
| filter type like "TaskFailed"

这将 return 您搜索的时间段内所有失败类型的任务。