Step Functions 中的可重用状态定义

Reusable State Definition in Step Functions

我们正在通过 AWS Step 函数创建一个由多个 SQL 操作(聚合、转置等)组成的工作流。每个操作都建模为一个单独的 Lambda,其中包含 SQL 查询。

现在,每个查询都接受来自状态机的输入参数,因此每个 lambda 任务如下:

"SQLQueryTask": {
    "Type": "Task",
    "Parameters": {
        "param1.$": "$$.Execution.Input.param1",
        "param2.$": "$$.Execution.Input.param2"
    },
    "Resource": "LambdaArn",
    "End": true
}

参数块因此对每个 SQL 查询节点重复。 添加到此,因为 Lambdas 可能会间歇性地失败,我们想为他们重试;我们还需要在每个州都有以下重试块:

"Retry": [ {
   "ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException"],
   "IntervalSeconds": 2,
   "MaxAttempts": 6,
   "BackoffRate": 2
} ]

这使得状态定义变得非常复杂。有没有办法将状态定义的公共部分提取到可重用的部分?

一种解决方案可能是使用 AWS CDK (https://aws.amazon.com/cdk/)

这允许开发人员定义更高级别的资源抽象,可以轻松地重复使用。

这里有一些示例可能会有所帮助:https://docs.aws.amazon.com/cdk/api/latest/docs/aws-stepfunctions-readme.html