Java AWS Stepfunctions工作流使用fargate作为工作者-如何将输出发送到下一步?
我需要为stepfunctions创建一个api,但问题是,如何将第一个函数的输出作为下一个函数的输入 以下是我到目前为止的情况:Java AWS Stepfunctions工作流使用fargate作为工作者-如何将输出发送到下一步?,java,amazon-web-services,aws-step-functions,aws-fargate,Java,Amazon Web Services,Aws Step Functions,Aws Fargate,我需要为stepfunctions创建一个api,但问题是,如何将第一个函数的输出作为下一个函数的输入 以下是我到目前为止的情况: { "Comment": "Match", "StartAt": "Search", "States": { "Search": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": {
{
"Comment": "Match",
"StartAt": "Search",
"States": {
"Search": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"Cluster": "Search-cluster",
"TaskDefinition": "Search-task",
"Overrides": {
"ContainerOverrides": [
{
"Name": "search",
"Command.$": "$.commands"
}
]
}
},
"Next": "Save"
},
"Save": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"Cluster": "save-cluster",
"TaskDefinition": "save-task",
"Overrides": {
"ContainerOverrides": [
{
"Name": "save",
"Command.$": "$.commands"
}
]
}
},
"Next": "Send"
},
"Send": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"Cluster": "send-cluster",
"TaskDefinition": "send-task",
"Overrides": {
"ContainerOverrides": [
{
"Name": "send",
"Command.$": "$.commands"
}
]
}
},
"End": true
}
}
}
你不必手动管理这个。Lambda函数的
事件
参数包含以前的函数返回输出。我遇到了同样的问题,并联系了AWS支持部门。被告知不可能像使用Lambdas那样直接返回Fargate任务的结果。其中一个选项是将任务的结果存储在单独的数据库(如DynamoDB)中,并编写Lambda来检索值,并使用上一个任务的输出更新输入JSON
旁注:在ASL中,您应该查看如何使用ResultPath
。默认行为是用输出(结果)替换输入节点。也就是说,如果在输入JSON中有要在后续状态中使用的值,并且没有指定ResultPath
,那么在第一个状态之后,这些值就会丢失。参考: