我有一个输出以下内容的任务状态:
"batch": {
"batch": "size",
"currentTimestamp": 1596205376
},
映射状态输出一个数组:
"batch": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
}
]
我想把它们组合起来,这样映射状态后面的状态的输入就是:
"batch": [
{
"batch": "Size",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-22",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-8",
"currentTimestamp": 1596205376
}
]
这是否可能使用aws步骤函数中可用的输入/输出处理?我希望将它们包含在一个数组中,以便稍后在状态机中的附加映射状态中一起处理它们。
这是可能的。试试这个。
- ASL定义
{
"StartAt": "getArrayOfArray",
"States": {
"getArrayOfArray": {
"Type": "Pass",
"Parameters": {
"arrayOfArray.$": "States.Array($.array, States.Array($.appendant))"
},
"Next": "mergeArray"
},
"mergeArray": {
"Type": "Pass",
"Parameters": {
"mergedArray.$": "$.arrayOfArray[*][*]"
},
"End": true
}
}
}
- 输入
{
"array": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
}
],
"appendant": {
"batch": "size",
"currentTimestamp": 1596205376
}
}
- 输出
{
"mergedArray": [
{
"batch": "product-batch-0",
"currentTimestamp": 1596205376
},
{
"batch": "product-batch-1",
"currentTimestamp": 1596205376
},
{
"batch": "size",
"currentTimestamp": 1596205376
}
]
}
您应该使用另一个Lambda函数来合并输入和输出,因为step函数输出功能无法将结果附加到数组中或将输入和输出合并为数组。
[1] :https://docs.aws.amazon.com/step-functions/latest/dg/input-output-resultpath.html#input-输出结果路径附加
如果您需要在step函数中执行多次操作,则只能使用一种状态,即同时使用数组扁平化(some_array[][](和数组合并(States.array(array1,array2((:
"AddItemToArrayState": {
"Type": "Pass",
"Next": "NextState,
"Parameters": {
"property_with_array.$": "States.Array($.property_with_array[*][*], States.Array('item1', 'item2'))"
}
},
"NextState": {
"Type": "Pass",
"Next": "FinalState,
"Parameters": {
"property_with_array.$": "States.Array($.property_with_array[*][*], States.Array('item1', 'item2'))"
}
},
"FinalState": {
"Type": "Pass",
"Parameters": {
"property_with_array.$": "$.property_with_array[*][*]"
},
"End": true
}