探索 Step Functions 工作流程的用例
借助 Amazon Step Functions,可以构建随时间推移管理状态、根据传入的数据做出决策以及处理错误和异常的工作流程。
数据处理
随着来自不同来源的数据量不断增长,组织需要更快地处理其数据,以便快速做出明智的业务决策。为了大规模处理数据,组织需要灵活地调配资源,来管理他们从移动设备、应用程序、卫星、市场营销和销售、运营数据存储、基础设施等接受的信息。
通过水平扩缩和容错工作流程,Step Functions 可以运行数百万个并发执行。在 Parallel 工作流程状态 状态下使用并行执行,可以更快地处理数据。或者,可以使用 Map 状态工作流程。 状态的动态并行性来迭代数据存储(例如 Amazon S3 存储桶)中的大型数据集。Step Functions 还提供重试失败执行的功能,或选择特定路径来处理错误,而无需管理复杂的错误处理过程。
Step Functions 直接与 Amazon 提供的其它数据处理服务集成,例如用于批处理的 Amazon Batch、用于大数据处理的 Amazon EMR、用于数据准备的 Amazon Glue、用于数据分析的 Athena,以及用于计算的 Amazon Lambda。
客户使用 Step Functions 完成的数据处理工作流类型的示例包括:
文件、视频和图像处理
-
将一系列视频文件转换为大小或分辨率不同的文件,从而适配显示这些文件的设备,例如手机、笔记本电脑或电视。
-
将用户上传的大量照片转换为缩略图或各种分辨率的图像,以便在用户的网站上显示。
-
将半结构化数据(例如 CSV 文件)与非结构化数据(例如发票)结合起来,生成每月发送给业务利益相关者的业务报告。
-
将卫星收集的地球观测数据转换为相互对应的格式,然后添加在地球上收集的其他数据来源以获得更多见解。
-
从各种运输方式中获取产品的运输日志,并使用蒙特卡罗模拟进行优化,然后将报告发送回使用您的运输运送货物的组织和人员。
协调提取、转换、加载 (ETL) 任务:
-
使用 Amazon Glue 进行一系列数据准备步骤,将销售机会记录与营销指标数据集相结合,并生成可在整个组织中使用的商业智能报告。
-
创建、启动和终止用于大数据处理的 Amazon EMR 集群。
批处理和高性能计算 (HPC) 工作负载:
-
构建基因组二级分析管道,将原始的全基因组序列处理成变异调用。将原始文件与参考序列对齐,并使用动态并行调用指定染色体列表上的变异。
-
通过使用不同的电气和化合物模拟各种布局,提高下一代移动设备或其他电子产品的生产效率。通过各种模拟对工作负载进行大批量处理,以便获得最佳设计。
Machine Learning
机器学习为组织提供了一种方法,可快速分析收集到的数据来识别模式,并在做出决策时尽可能减少人为干预。机器学习始于一组初始数据,即训练数据。训练数据可提高机器学习模型的预测准确性,并作为模型学习的基础。经过训练的模型在准确性达到要求,足以满足业务需要后,便可以将模型部署到生产中。Github 上的 Amazon Step Functions Data Science Project
预处理现有数据集是组织创建训练数据的常用方式。这种预处理方法会添加信息,例如标注图像中的对象、注释文本或处理音频。要预处理数据,可以使用 Amazon Glue,也可以创建一个在 Jupyter Notebook 中运行的 SageMaker AI 笔记本实例。数据准备就绪后,可以将其上传到 Amazon S3 以供访问。训练机器学习模型时,可以调整每个模型的参数来提高准确性。
Step Functions 提供了一种在 SageMaker AI 上编排端到端机器学习工作流的方法。这些工作流可能包括数据预处理、后处理、特征工程、数据验证和模型评估。在将模型部署到生产后,可以优化和测试新方法,来持续改善业务成果。您可以直接在 Python 中创建生产就绪型工作流,也可以使用 Step Functions 数据科学开发工具包复制该工作流,体验新选项,然后将改进后的工作流投入到生产中。
客户使用 Step Functions 的机器学习工作流类型包括:
欺诈侦测
-
识别并防止欺诈性交易(例如信用欺诈)的发生。
-
使用经过训练的机器学习模型侦测并预防账户盗用。
-
识别促销滥用行为,包括创建虚假账户,以便您可以快速采取行动。
个性化和推荐
-
根据对目标客户兴趣的预测,向其推荐产品。
-
预测客户是否会将其账户从免费套餐升级为付费订阅。
数据扩充
-
将数据扩充作为预处理的一部分,为更精确的机器学习模型提供更好的训练数据。
-
为文本和音频摘录添加注释,以便添加语法信息,例如讽刺和俚语。
-
为图像中的其他对象添加标签,为模型学习提供关键信息,例如对象是苹果、篮球、岩石还是动物。
微服务编排
Step Functions 提供了管理微服务工作流程的选项。
微服务架构将应用程序分解为松耦合的服务。这样做的好处包括提高可扩展性、增强弹性和加快上市时间。每个微服务都是独立的,因此无需扩展整个应用程序,即可轻松纵向扩展单个服务或功能。各项服务为松耦合,以便独立的团队可以专注于单个业务流程,而无需了解整个应用程序。
微服务还提供适合您业务需求的各个组件,可在不重写整个工作流程的情况下为您提供灵活性。不同的团队可以使用自己选择的编程语言和框架来处理其微服务。
对于长时间运行的工作流程,可以将标准工作流程与 Amazon Fargate 集成一起使用,来编排在容器中运行的应用程序。对于需要即时响应的短期、高容量工作流程,同步快速工作流程是理想选择。一个示例是基于 Web 的应用程序或移动应用程序,此类应用程序要求先完成一系列步骤,然后才返回响应。您可以直接从 Amazon API Gateway 触发同步快速工作流,在工作流完成或超时之前,连接将保持打开状态。对于不需要即时响应的短期工作流,Step Functions 还提供了异步快速工作流。
使用 Step Functions 的 API 编排示例包括:
同步或实时工作流
-
更改记录中的值,例如更新员工的姓氏并立即显示更改。
-
在结账时更新订单,例如添加、移除或更改商品数量;然后立即向您的客户显示更新的购物车。
-
运行快速处理任务,并立即将结果返回给请求者。
容器编排
-
使用 Amazon Elastic Kubernetes Service 在 Kubernetes 上运行作业,或者使用 Fargate 在Amazon Elastic Container Service (ECS) 上运行作业,并与其他 Amazon 服务集成,例如通过 Amazon SNS 发送通知,作为同一工作流的一部分。
IT 和安全自动化
借助 Step Functions,可以创建自动扩展并响应工作流程中错误的工作流程。工作流程可以自动重试失败的任务,并使用指数回退来处理错误。
在 IT 自动化场景中,错误处理对于管理复杂而耗时的操作至关重要,例如升级和修补软件、部署安全更新以修复漏洞、选择基础设施、同步数据以及路由支持票证。通过自动执行重复性和耗时的任务,组织可以快速、一致地大规模完成例行操作。这样,就可以在满足运营需求的同时,将重点转移到战略性工作上,如功能开发、复杂的支持请求和创新。
当工作流程需要人工干预才能继续推进时,例如对信用额度大幅增加进行审批,您可以在 Step Functions 中定义分支逻辑,以便低于限额的申请会自动获得批准,而达到该限额的申请则需要人工审批。在需要人工审批的情况下,Step Functions 可以暂停工作流程,等待人工响应,然后在收到响应后继续推进工作流程。
自动化工作流程的一些示例包括以下各项:
IT 自动化
-
自动修复诸如打开 SSH 端口、磁盘空间不足或授予对 Amazon S3 存储桶的公开访问权限之类的事件。
-
自动部署 Amazon CloudFormation StackSets。
安全自动化
-
自动响应用户和用户访问密钥被泄露的场景。
-
根据策略操作自动修复安全事件响应,例如将操作限制到特定的 ARN。
-
在员工收到网络钓鱼电子邮件的几秒钟内发出警告。
人工审批
-
自动进行机器学习模型训练,然后在部署更新的模型之前,获得数据科学家对模型的批准。
-
根据情绪分析自动发送客户反馈,从而快速将负面评论上报以供审核。