Rre*_*Cat 3 amazon-web-services aws-lambda aws-step-functions
假设我的 Step Function 的一部分如下所示:
"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"
}
Run Code Online (Sandbox Code Playgroud)
假设该状态的输入是:
{
"value": 0,
"output1": object1,
"output2": object2,
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我必须传递output1给ValueIsZerostateoutput2和DefaultState. 我知道可以改变和InputPath状态。但这种方式对我来说是不可接受的,因为我也从其他一些州打电话给这些州。ValueIsZeroDefaultState
我尝试ChoiceStateX像下面这样修改状态:
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"OutputPath": "$.output1",
"Next": "ValueIsZero"
}
],
"Default": "DefaultState"
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到下一个错误:Field OutputPath is not support。
如何才能实现这个功能呢?
PS:目前我正在 ChoiceStateX 和 ValueIsZero/DefaultState 之间使用“代理”状态来修改输出。
我检查过:
但还没有找到解决办法。
看起来不可能OutputPath为一种状态指定不同的状态。
使用代理状态的解决方案看起来并不优雅。
我之前在状态下用另一种方式解决过这个问题ChoiceStateX。我在output属性中设置不同类型的实例,并且仅在状态上路由它ChoiceStateX。
我的状态输入ChoiceStateX如下所示:
{
"value": value,
"output": value==0 ? object1 : object2
}
Run Code Online (Sandbox Code Playgroud)
结束ChoiceStateX状态的最终版本:
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.value",
"NumericEquals": 0,
"Next": "ValueIsZero"
}
],
"OutputPath": "$.output",
"Default": "DefaultState"
}
Run Code Online (Sandbox Code Playgroud)
它仍然不完美,因为我在两个地方实现了相同的逻辑。
| 归档时间: |
|
| 查看次数: |
6579 次 |
| 最近记录: |