java - 使用 fargate 作为 worker 的 AWS Step Functions 工作流程 - 如何将输出发送到下一步?

标签 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": {
                "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
  }
}
}

最佳答案

我遇到了同样的问题并联系了 AWS Support。被告知无法像使用 Lambda 那样直接返回 Fargate 任务的结果。一种选择是将您的任务结果存储在单独的数据库(如 DynamoDB)中,并编写一个 Lambda 来检索该值并使用上一个任务的输出更新您的输入 JSON。

旁注:在您的 ASL 中,您应该考虑使用 ResultPath。默认行为是用输出(结果)替换输入节点。意思是,如果在您的输入 JSON 中有您想要在后续状态中使用的值,并且如果您没有指定 ResultPath,它们将在第一个状态后丢失。引用:https://docs.aws.amazon.com/step-functions/latest/dg/input-output-resultpath.html#input-output-resultpath-amend

关于java - 使用 fargate 作为 worker 的 AWS Step Functions 工作流程 - 如何将输出发送到下一步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981911/

相关文章:

amazon-web-services - 将外部 IP 分配给 Kubernetes 节点 (AWS EKS)

node.js - 调用 AWS lambda 处理程序回调时遇到 Neptune Gremlin 连接问题

java - 尝试提交 TableCell 时调用 cancelEdit()

java - java中如何获取线程的实际执行时间

java - 在 Java 中将类转换为字符串,反之亦然

java - 使用 Elastic Beanstalk 上的 catalina.out 缓解存储问题

java - 阿奎利安和 CDI

node.js - 如何在 node.js/Javascript 中签署 Amazon Simple Pay 按钮

amazon-web-services - 如何使用 Terraform 定义 cloundwatch 事件规则来触发 StepFunction statemachine

amazon-web-services - 如何在AWS Step Functions中使用数组内部的jsonPath