AWS Step Function sfn.ListExecutions 不显示执行情况

问题描述 投票:0回答:1

我正在尝试列出并停止状态机的所有执行。我正在使用以下代码来列出并停止执行。

func stopAllExecutions(sfnSvc *sfn.SFN, stateMachineArn string) error {
    var nextToken *string
    // Since ListExecutionsInput only supports up to 1000 results per query, create loop to delete all executions
    for {
        executionsInput := &sfn.ListExecutionsInput{
            StateMachineArn:    aws.String(stateMachineArn),
            MaxResults:         aws.Int64(1000),
            NextToken:          nextToken,
            StatusFilter:       aws.String("RUNNING"),
        }
        executions, err := sfnSvc.ListExecutions(executionsInput)
        if err != nil {return err}
        for _, execution := range executions.Executions {
            if *execution.Status == "RUNNING" {
                _, err := sfnSvc.StopExecution(&sfn.StopExecutionInput{
                    ExecutionArn: execution.ExecutionArn,
                })
                if err != nil {
                    return err
                }
            }
        }

        // If NextToken is not set, there are no more results to retrieve
        if executions.NextToken == nil {
            break
        }
        nextToken = executions.NextToken
    }
    return nil
}

它将列出执行情况,说它们已被删除。如果我立即再次运行它,那么它应该没有执行。 AWS 控制台也显示没有执行。但是如果我运行

aws cli
命令:
aws stepfunctions list-executions --state-machine-arn $STATE_MACHINE_ARN --status-filter RUNNING --output text
,它将显示我仍然有数千个执行处于
RUNNING
状态。

然后最奇怪的部分是,如果我等待一段时间(> 30 分钟),那么我的 golang 命令将能够再次看到执行并“终止”,而它只是表现得像以前一样,并且实际上并没有删除它们(就术语而言)

aws cli
命令可以看到的内容)

知道为什么会出现这种情况吗?

amazon-web-services state-machine aws-step-functions
1个回答
0
投票

看起来是由于这一行:

*execution.Status == "RUNNING"
执行状态应该是指针(类型为aws.String)而不是字符串。该行将其与普通字符串进行比较,这导致该函数永远不会真正停止执行。然而,为什么操作后控制台没有显示执行结果仍然是个谜……

© www.soinside.com 2019 - 2024. All rights reserved.