【问题标题】:AWS Express Step Function execution within Express Step Function在 Express Step Function 中执行 AWS Express Step Function
【发布时间】:2021-10-13 08:21:15
【问题描述】:

Standard Workflow 中,我们可以愉快地调用另一个Standard workflow 使用

{
  "Type": "Task",
  "Resource": "arn:aws:states:::states:startExecution.sync:2",
  "Parameters": {
    "StateMachineArn": "${NestedStateMachineArn}",
    ...
  }
  ...

当我们尝试对Express workflow 做同样的事情时,我们当然会得到Express state machine does not support '.sync' service integrationaws 说明了这是预期的行为。

是否有另一种方法可以从另一个 Express workflow 执行 Express workflow 并以某种方式获得执行结果/输出?我可以想到最后的手段——使用Lambda函数执行嵌套的工作流同步并等待响应,也就是说,它会增加不必要地等待StateMachine的函数的成本。

我试图环顾四周,但在任何地方都找不到此文档。

【问题讨论】:

  • 请将您选择的答案从说这是不可能的答案更改为解释这是如何可能的答案。

标签: amazon-web-services aws-serverless aws-step-functions


【解决方案1】:

您可以执行另一个工作流程,只是不能等待结果。我相信您只需要从资源中删除 .sync 即可。如果您需要等待第二个函数的结果,您将无法在快速工作流程中执行此操作。

来自Service Integrations with AWS Step Functions

标准工作流和快速工作流支持同一组服务集成,但不支持相同的集成模式。快速工作流不支持运行作业 (.sync) 或等待回调 (.waitForTaskToken)。如需更多信息,请参阅Standard vs. Express Workflows

【讨论】:

  • 我应该在我的问题中澄清一下,我希望从嵌套的 Step Function 中获取输出。我已经编辑并添加了它。
  • 不幸的是,除了您所描述的之外,没有其他方法可以做到这一点。我试着想别的办法,但我不这么认为。 API Gateway 与 step 函数的集成对于 express 工作流具有相同的限制,因此虽然您可以从第一步函数调用 API Gateway 作为请求/响应,但第二个函数只能运行 express 工作流而不会结果。如果第二步功能可以是标准工作流程,那么您将有一些选择。
【解决方案2】:

您可以使用 StartSyncExecution API 同步执行 Express 执行,现在使用 "Resource": "arn:aws:states:::aws-sdk:sfn:startSyncExecution" 在 Step Functions 中支持 AWS SDK integration

"NestedExpressWorkflow": {
  "Type": "Task",
  "Resource": "arn:aws:states:::aws-sdk:sfn:startSyncExecution",
  "Parameters": {
    "StateMachineArn": <your_express_state_machine>,
    "Input.$": "$"
  },
  "Next": "NextState"
}

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多