假设我的“步进功能”的一部分如下所示:
ArrayVec
假设此状态的输入为:
"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"
}
我的问题是我必须将{
"value": 0,
"output1": object1,
"output2": object2,
}
传递到output1
状态,并将ValueIsZero
传递给output2
。我知道可以在DefaultState
和InputPath
状态下更改ValueIsZero
。但是这种方式对我来说是不可接受的,因为我也从其他一些州调用这些州。
我试图像下面那样修改DefaultState
状态:
ChoiceStateX
在这种情况下,我遇到下一个错误:不支持字段OutputPath 。
如何实现此功能?
PS:当前,我在ChoiceStateX和ValueIsZero / DefaultState之间使用“代理”状态,以修改输出。
我已检查:
但尚未找到解决方案。
答案 0 :(得分:0)
似乎无法为一种状态指定不同的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"
}
它仍然不是完美的,因为我在两个地方实现了相同的逻辑。