Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在AWS Step函数中传递选择状态的不同输出?_Amazon Web Services_Aws Lambda_Aws Step Functions - Fatal编程技术网

Amazon web services 如何在AWS 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

假设我的Step函数的一部分如下所示:

"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"
}
它仍然不是完美的,因为我在两个地方实现了相同的逻辑