从 lambda 函数同步调用步进函数
Invoking a step function synchronously from a lambda function
我有一个由 FIFO SQS 触发的 lambda 函数。我只想要函数 运行 的一个实例。该函数调用状态机,并且状态机比 lambda 函数需要更长的时间才能完成。我希望 lambda 函数仅在步骤函数完成执行后完成。
AWS Step Functions 只能异步调用。状态机可以 运行 长达 1 年,因此同步调用是不可能的。根据您的工作流程,您可能会发现 Activities 有用。
Activities are an AWS Step Functions feature that enables you to have
a task in your state machine where the work is performed by a worker
that can be hosted on Amazon Elastic Compute Cloud (Amazon EC2),
Amazon Elastic Container Service (Amazon ECS), mobile
devices—basically anywhere.
如果您希望您的状态机在合理的时间内完成,那么您可以让您的 Lambda(或启动状态机执行的任何其他东西)等待响应。
这是一个公认的模式,但有很多活动部分:
- 设置一个SNS主题;状态机结果将发布到上面
- 在您的 Lambda 初始化期间:
- 生成一个随机的“网关 ID”
- 创建 SQS 队列
- 订阅 SQS 队列,按网关 ID 过滤
- 当您的 Lambda 调用状态机时:
- 生成一个随机的“关联 ID”
- 在状态机的输入中包含网关和关联 ID
- 作为状态机的最后一步,将结果发布到SNS主题。
在响应中包含网关和关联 ID。
- 在lambda中,提交状态机执行后:
- 等待 SQS 队列中的消息。
- 考虑一下超时问题。您应该为响应设置超时。因此,您可以在状态机上设置一个生存时间——如果它的结果在这个 Lambda 死后将变得无用。
- 当它到达时,确保它的关联 ID 与您的相匹配,然后使用该消息中的数据作为您的回复。
AWS Express Step Functions 现在支持 synchronous invocations。
请记住,Express Step Functions 适用于需要更高事件率和更短持续时间的工作负载。另外,请记住,就像 lambda 一样,您将根据请求的数量和工作流程的持续时间进行计费。
我有一个由 FIFO SQS 触发的 lambda 函数。我只想要函数 运行 的一个实例。该函数调用状态机,并且状态机比 lambda 函数需要更长的时间才能完成。我希望 lambda 函数仅在步骤函数完成执行后完成。
AWS Step Functions 只能异步调用。状态机可以 运行 长达 1 年,因此同步调用是不可能的。根据您的工作流程,您可能会发现 Activities 有用。
Activities are an AWS Step Functions feature that enables you to have a task in your state machine where the work is performed by a worker that can be hosted on Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), mobile devices—basically anywhere.
如果您希望您的状态机在合理的时间内完成,那么您可以让您的 Lambda(或启动状态机执行的任何其他东西)等待响应。
这是一个公认的模式,但有很多活动部分:
- 设置一个SNS主题;状态机结果将发布到上面
- 在您的 Lambda 初始化期间:
- 生成一个随机的“网关 ID”
- 创建 SQS 队列
- 订阅 SQS 队列,按网关 ID 过滤
- 当您的 Lambda 调用状态机时:
- 生成一个随机的“关联 ID”
- 在状态机的输入中包含网关和关联 ID
- 作为状态机的最后一步,将结果发布到SNS主题。 在响应中包含网关和关联 ID。
- 在lambda中,提交状态机执行后:
- 等待 SQS 队列中的消息。
- 考虑一下超时问题。您应该为响应设置超时。因此,您可以在状态机上设置一个生存时间——如果它的结果在这个 Lambda 死后将变得无用。
- 当它到达时,确保它的关联 ID 与您的相匹配,然后使用该消息中的数据作为您的回复。
AWS Express Step Functions 现在支持 synchronous invocations。
请记住,Express Step Functions 适用于需要更高事件率和更短持续时间的工作负载。另外,请记住,就像 lambda 一样,您将根据请求的数量和工作流程的持续时间进行计费。