【发布时间】:2021-08-02 15:48:54
【问题描述】:
我们正在通过 AWS Step 函数创建一个由多个 SQL 操作(聚合、转置等)组成的工作流。每个操作都被建模为一个单独的 Lambda,其中包含 SQL 查询。
现在,每个查询都接受来自状态机的输入参数,所以每个 lambda 任务如下:
"SQLQueryTask": {
"Type": "Task",
"Parameters": {
"param1.$": "$$.Execution.Input.param1",
"param2.$": "$$.Execution.Input.param2"
},
"Resource": "LambdaArn",
"End": true
}
Parameters 块因此对每个 SQLQuery 节点重复。 添加到这一点,因为 Lambdas 可能会间歇性地失败,我们想为它们重试;我们还需要在每个州都有以下重试块:
"Retry": [ {
"ErrorEquals": [ "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException"],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
} ]
这使得状态定义变得非常复杂。有没有办法将状态定义的公共部分提取为可重用的部分?
【问题讨论】:
标签: amazon-web-services aws-lambda etl aws-step-functions