Java AWS Stepfunctions工作流使用fargate作为工作者-如何将输出发送到下一步?

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": {

我需要为stepfunctions创建一个api,但问题是,如何将第一个函数的输出作为下一个函数的输入

以下是我到目前为止的情况:

{
  "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
,那么在第一个状态之后,这些值就会丢失。参考: