理论
什么是步进功能?
来自AWS Docs:Step Functions是一种无服务器编排服务,可让您结合使用AWS Lambda函数和其他AWS服务来创建关键业务应用程序。使用“步骤功能”图形控制台,您可以将应用程序工作流视为一系列事件驱动的步骤。步骤功能基于状态机和任务。状态机是工作流。任务是工作流中的一种状态,它是另一个AWS服务正在执行的工作单元。工作流程的每个步骤都是一个状态。
使用内置的“步骤功能”控件,您可以检查每个工作流程步骤的状态,以确保您的应用程序以正确的顺序并按预期运行。根据您的用例,Step Functions可以调用Lambda等AWS服务来执行任务。您可以创建用于处理和发布机器学习模型的工作流。您可以使用Step Functions来管理AWS服务(例如AWS Glue)来创建Extract,Transform和Load(ETL)工作流。您也可以为需要人工交互的应用程序创建冗长的自动化工作流。
或者简单地说就是用于管理流程的服务。
步进功能可能有哪些用例?
- 编排Lambda函数
- 分枝
- 异常处理(重试或捕获)
- 人类参与过程
- 平行性
步骤功能中的处理类型
- 标准-长时间运行的流程所需,对服务和交互选项具有广泛的支持
- Express-快速运行的流程(5分钟)所需,每百万执行的流程节省约20倍。与AWS服务的集成较少
与AWS服务集成的类型
请求响应(默认)-收到HTTP响应后,调用服务并允许“步骤功能”进入下一个状态。
运行作业(.sync)-调用服务并等待作业完成。
等待带有任务令牌(.waitForTaskToken)的回调-使用任务令牌调用服务,并等待任务令牌使用该回调返回。
比较标准类型和快速类型与AWS服务的集成
支持的标准服务集成
服务 | 要求回应 | 运行作业(.sync) | 等待回调(.waitForTaskToken) |
---|---|---|---|
拉姆达 | ✓ | ✓ | |
AWS批处理 | ✓ | ✓ | |
DynamoDB | ✓ | ||
亚马逊ECS / AWS Fargate | ✓ | ✓ | ✓ |
亚马逊SNS | ✓ | ✓ | |
亚马逊SQS | ✓ | ✓ | |
AWS胶水 | ✓ | ✓ | |
贤者 | ✓ | ✓ | |
亚马逊电子病历 | ✓ | ✓ | |
代码构建 | ✓ | ✓ | |
AWS Step函数 | ✓ | ✓ | ✓ |
Express支持的服务集成
服务 | 要求回应 | 运行作业(.sync) | 等待回调(.waitForTaskToken) |
---|---|---|---|
拉姆达 | ✓ | ||
AWS批处理 | ✓ | ||
DynamoDB | ✓ | ||
亚马逊ECS / AWS Fargate | ✓ | ||
亚马逊SNS | ✓ | ||
亚马逊SQS | ✓ | ||
AWS胶水 | ✓ | ||
贤者 | ✓ | ||
亚马逊电子病历 | ✓ | ||
代码构建 | ✓ | ||
步骤功能 | ✓ | ✓ |
理论足够多,让我们举个例子。
理论实例
为了至少了解服务的外观,请考虑Hello world示例。
前提条件
- AWS账户
- 转到AWS账户中的Step Functions服务
因此,以下是我们的工作:
- 转到“创建步骤功能”
- 定义状态机=具有代码段的作者
- 类型=标准
- 定义=
{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World", "End": true } } }
单击开始执行。插入可以省略。您应该看到如下图:
恭喜,您已经创建了最简单的Step Functions。
而不是结论
如果这个主题很有趣,那么在下一部分中,我们将创建具有AWS Lambda + SQS + SNS集成的Step Functions,如下图所示:
链接到资源:
https://docs.aws.amazon.com/step-functions/