Amazon web services 如何在AWS Step函数中传递选择状态的不同输出?
假设我的Step函数的一部分如下所示:Amazon web services 如何在AWS Step函数中传递选择状态的不同输出?,amazon-web-services,aws-lambda,aws-step-functions,Amazon Web Services,Aws Lambda,Aws Step Functions,假设我的Step函数的一部分如下所示: "ChoiceStateX": { "Type": "Choice", "Choices": [ { "Variable": "$.value", "NumericEquals": 0, "Next": "ValueIsZero" } ], "Default": "DefaultState" }, "ValueIsZero": { "Type" : "Task", "Resourc
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"Next": "ValueIsZero"
}
],
"Default": "DefaultState"
},
"ValueIsZero": {
"Type" : "Task",
"Resource": "arn:aws:lambda:******:function:Zero",
"Next": "NextState"
},
"DefaultState": {
"Type" : "Task",
"Resource": "arn:aws:lambda:******:function:NotZero",
"Next": "NextState"
}
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"OutputPath": "$.output1",
"Next": "ValueIsZero"
}
],
"Default": "DefaultState"
}
假设此状态的输入为:
{
"value": 0,
"output1": object1,
"output2": object2,
}
我的问题是我必须将output1
传递到ValueIsZero
状态,将output2
传递到DefaultState
。我知道可以在ValueIsZero
和DefaultState
状态中更改InputPath
。但这种方式对我来说是不可接受的,因为我也从其他州给这些州打电话
我试图修改ChoiceStateX
状态,如下一步:
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"Next": "ValueIsZero"
}
],
"Default": "DefaultState"
},
"ValueIsZero": {
"Type" : "Task",
"Resource": "arn:aws:lambda:******:function:Zero",
"Next": "NextState"
},
"DefaultState": {
"Type" : "Task",
"Resource": "arn:aws:lambda:******:function:NotZero",
"Next": "NextState"
}
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"OutputPath": "$.output1",
"Next": "ValueIsZero"
}
],
"Default": "DefaultState"
}
在这种情况下,我遇到了下一个错误:不支持字段OutputPath
如何实现此功能
PS:在当前时刻,我正在ChoiceStateX和ValueIsZero/DefaultState之间使用“代理”状态,其中修改了输出
我查过:
但尚未找到解决方案。似乎无法为一个状态指定不同的
OutputPath
使用代理状态的解决方案看起来并不优雅
我已经在ChoiceStateX之前的州以另一种方式解决了这个问题。我正在output
属性中设置不同类型的实例,并且仅在ChoiceStateX
状态下路由它
我输入的ChoiceStateX
状态如下所示:
{
"value": value,
"output": value==0 ? object1 : object2
}
结束ChoiceStateX的最终版本状态:
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"Next": "ValueIsZero"
}
],
"OutputPath": "$.output",
"Default": "DefaultState"
}
它仍然不是完美的,因为我在两个地方实现了相同的逻辑