AWS Step Function:终止嵌套工作流程

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

我在 C# CDK 中定义了一个 AWS 步骤函数,其中状态之一是如下定义的任务:

var executeGlueJobStepFunction = new CustomState(this, "ExecuteGlueJobStepFunction", new CustomStateProps
{
    StateJson = new Dictionary<string, object>
        {
            { "Type", "Task" },
            { "Resource", "arn:aws:states:::states:startExecution.sync:2" },
            { "Parameters", new Dictionary<string, object>
                {
                    { "StateMachineArn.$", JsonPath.Format($"arn:aws:states:{Stack.Of(this).Region}:{Stack.Of(this).Account}:stateMachine:{{}}", JsonPath.StringAt("$.stepFunctionName")) },
                    { "Input.$", JsonPath.EntirePayload }
                }
            },
            { "ResultSelector", new Dictionary<string,object>
                {
                    { "Output.$", "$.Output" }
                }
            },
        },
});

这将开始执行另一个步骤函数,触发粘合作业同步运行。

现在,当调用者步骤函数失败或中止时,子执行(和胶水作业运行)将继续完成。

有没有办法可以改变这种行为,以便在调用者步骤函数失败时终止子执行和粘合作业运行?

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

处理嵌套 Step Functions 执行时,向参数添加

StopNewExecution: true
解决了此问题。以下是您可以尝试修改 CDK 代码的方法:

var executeGlueJobStepFunction = new CustomState(this, "ExecuteGlueJobStepFunction", new CustomStateProps
{
    StateJson = new Dictionary<string, object>
    {
        { "Type", "Task" },
        { "Resource", "arn:aws:states:::states:startExecution.sync:2" },
        { "Parameters", new Dictionary<string, object>
            {
                { "StateMachineArn.$", JsonPath.Format($"arn:aws:states:{Stack.Of(this).Region}:{Stack.Of(this).Account}:stateMachine:{{}}", JsonPath.StringAt("$.stepFunctionName")) },
                { "Input.$", JsonPath.EntirePayload },
                { "StopNewExecution", true }  // This parameter does the trick
            }
        },
        { "ResultSelector", new Dictionary<string,object>
            {
                { "Output.$", "$.Output" }
            }
        },
    },
});

请注意,父级停止和子级执行/粘合作业终止之间可能存在轻微延迟。这在我们的生产环境中完美运行。

让我知道进展如何。

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