gpt4 book ai didi

amazon-web-services - AWS Step Function Lambda 等待 token - 等待何时发生?

转载 作者:行者123 更新时间:2023-12-05 05:01:47 24 4
gpt4 key购买 nike

AWS StepFunctions 支持 callback model .文档内容如下:

Callback tasks provide a way to pause a workflow until a task token isreturned. A task might need to wait for a human approval, integratewith a third party, or call legacy systems. For tasks like these, youcan pause Step Functions indefinitely, and wait for an externalprocess or workflow to complete. For these situations Step Functionsallows you to pass a task token to some integrated services. The taskwill pause until it receives that task token back with aSendTaskSuccess or SendTaskFailure call.

如果使用 CDK 定义状态机来调用 lambda 作为 Step Function 映射的一部分(即它在循环中):

LambdaInvoke myLambdaStepFunction = LambdaInvoke.Builder.create(this, "MyLambdaStepFunction ")
.lambdaFunction(myLambdaFunction)
.integrationPattern(IntegrationPattern.WAIT_FOR_TASK_TOKEN)
.build();

stepfunctions.Map loopSteps = stepfunctions.Map.Builder.create(this, "LambdaLoop")
.maxConcurrency(1)
.build();
loopSteps.iterator(myLambdaStepFunction);

StateMachine stateMachine = StateMachine.Builder.create(this, "StateMachine")
.stateMachineType(StateMachineType.STANDARD)
.timeout(Duration.minutes(5))
.definition(deployAllIncrementallySteps)
.build();

等待 token 什么时候发生?

  1. 是在第一次调用 lambda 之后吗?
  2. 是在第一次调用 lambda 之前吗?

最佳答案

token 等待发生在具有 IntegrationPattern.WAIT_FOR_TASK_TOKEN 集成的 Lambda 执行之后。这是模式:

  1. 如果您在负载中指定了 lambda,AWS 在 Step Function 事件中会向其传递一个 token ,例如在这里,我指定要在 $.token 路径中提供给 Lambda 的 JSON 负载中的 token ,以及 $.input 中输入的其余部分:
LambdaInvoke myLambdaStep= LambdaInvoke.Builder.create(this, "MyLambdaStep")
.lambdaFunction(myLambdaFunction)
.integrationPattern(IntegrationPattern.WAIT_FOR_TASK_TOKEN)
.payload(TaskInput.fromObject(Map.of("token", JsonPath.getTaskToken(), "input", JsonPath.stringAt("$.input"))))
.build();
  1. 在您的 Lambda 函数中,您负责从事件中解析 token 并将此 token 传递给某个外部代理:在某些时候,该代理需要调用 sendTaskSuccesssendTaskFailure 带有该 token 以指示该代理正在执行的工作已完成。外部代理可以是任何东西(另一个 Lambda、一个为您做一些工作的 EC2 服务器、一个外部 webhook,任何东西——它只需要在工作完成时将回调传回 AWS)。

  2. 当 AWS 收到来自您的代理的调用时,它会根据代理调用的成功或失败在您的步骤机器中调用适当的下一步。

关于amazon-web-services - AWS Step Function Lambda 等待 token - 等待何时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62576564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com