我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
在 亚马逊云科技 Step Functions 中实现提前退出并行状态的模式
这篇文章由企业支持高级技术客户经理 Madhav Vishnubhatta 撰写。
这篇博文解释了如何在
您可以使用
步进函数提供多种
无需等待所有并行流完成的模式
考虑一个场景,其中 Step Functions 工作流代表组织中员工申请笔记本电脑的流程。该流程以员工的请求作为第一步,但该请求的批准可能来自两位 IT 经理中的任何一位。
在这种情况下,可能会有两个并行流程,每个流程都在等待一位 IT 经理的批准。但是,只要有人批准,工作流程就可以进入下一步,向员工实际发放笔记本电脑。这是一种 “非此即可” 的模式。
考虑一个类似的用例,但要求略有不同。如果在笔记本电脑发放之前至少需要三分之二的IT经理的批准,那么仅仅一个人的批准就足以发放笔记本电脑,该怎么办。这是 “法定人数” 模式。
并行状态不直接支持这两种模式,因为该状态会等待所有流完成。在这种情况下,这意味着所有经理都必须先提供批准,然后才能发放笔记本电脑。
解决方案概述
Step Functions 提供了一种 具有
如果是非此即可,一旦并行流完成,失败状态就会抛出错误,该错误会在并行状态之外被捕获以进行进一步处理。尽管它处于失败状态,但在你的用例中它可能并不代表错误场景。
法定模式需要额外的机制来使用 Amazon Dynamo
先决条件
这两种模式都在
-
https://serverlessland.com/workflows/either-or-parallel-pattern -
https://serverlessland.com/workflows/quorum-with-parallel-pattern
要部署和使用这些模式,您需要:
- 一个 亚马逊云科技 账户
-
有权以用户身份登录或担任可以:
- 创建和运行 Step Functions 工作流程的角色。
- 创建和更新 DynamoDB 表。
-
创建一个
亚马逊云科技 身份和访问管理 (IAM) A cces s Management 角色,让步骤函数在运行工作流程时扮演。
-
熟悉
亚马逊云科技 无服务器应用程序模型 (亚马逊云科技 SAM )。 -
亚马逊云科技 SAM 命令行界面 已安装。
示例演练
非此即彼的模式
- 步骤函数工作流程。
- 在执行期间由 Step Functions 工作流程承担的 IAM 角色。
导航到
你可以在
非此即彼的模式。概念流程。
- 此工作流程中有三个(编号的)并行流。
- 流 #1 和 #2 是主要的并行流,其中一个流的完成应该会将控件移到并行状态之外。
- Flow #3 是超时流程,因此如果其他两个并行流程都没有完成,则工作流可以在设定的时间后退出。
-
两个主要的并行流都遵循以下逻辑:
- 等待过程完成。这是一个填充物,可以用你关于如何监控流程完成情况的业务逻辑来代替。这可能是人类的认可,也可能是需要完成的任何其他工作。
- 处理完成后,抛出一个虚拟错误,将控制移至并行状态之外。
- 这两个流的虚拟错误是在具有相应捕获条件的并行状态之外捕获的。
- 这两个流程中的错误不必分开捕获。无论哪个并行流已经完成,你都可能只做同样的操作,但我将单独显示一些步骤,以防你需要根据平行流的完成情况做一些不同的操作。
要测试工作流程,请按照 GitHub 存储库自述文件的
要清理创建的资源,请运行:
sam delete
法定人数模式
要部署法定模式,请按照
- 步骤函数工作流程。
- 在执行期间由 Step Functions 工作流程承担的 IAM 角色。
- 一个名为 “quorumWorkFlowtable” 的 DynamoDB 表。
在 亚马逊云科技 管理控制台中导航到 CloudFormation,然后使用部署期间提供的名称选择堆栈。在 CloudFormation 堆栈的 资源 部分选择状态机资源以转到步骤函数控制台。
选择 “ 编辑” ,然后选择 WorkflowStudio 以直观的方式显示工作流程。
你可以在
法定人数模式。概念流程。
- 第一步在 DynamoDB 表中创建一个条目,其中包含工作流程执行的执行 ID。表中的此项目跟踪流程的完成情况。
- 下一个状态是并行状态,它有三个并行流和第四个超时流。所有四个流量都有编号。
- 流程 #1、#2 和 #3 是主要的并行流,其中两个流的完成会将控件移至并行状态之外。
- Flow #4 是超时流程,因此如果其他两个并行流程都没有完成,则工作流可以在设定的时间后退出。
-
三个主要的并行流都使用以下逻辑:
- 等待过程完成。
- 完成后,更新 DynamoDB 表条目以标记该过程已完成。
- 更新后,从 DynamoDB 查询项目以获取已完成的流程列表,并检查是否已达到法定人数。
- 如果已达到法定人数,则提出 “错误”(这实际上是商业案例的成功标准),将控制权移至平行状态之外。
要测试工作流程,请按照 GitHub 存储库自述文件的
要清理创建的资源,请运行:
sam delete
结论
这篇博文介绍如何在 亚马逊云科技 Step Functions 工作流程中实现必须尽早退出并行状态的模式。
这种方法的用例不仅限于这两种模式。更复杂的用例,例如使用不同的条件组合来退出并行状态,都可以使用并行和失败状态来实现。
访问
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。