

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 探索 Step Functions 工作流程的用例
<a name="use-cases"></a>

借Amazon Step Functions助，您可以构建能够随着时间的推移管理状态、根据传入的数据做出决策以及处理错误和异常的工作流程。

**Topics**
+ [数据处理](#use-cases-data-processing)
+ [机器学习](#use-cases-machine-learning)
+ [微服务编排](#use-cases-orchestration)
+ [IT 和安全自动化](#use-cases-security-automation)

## 数据处理
<a name="use-cases-data-processing"></a>

随着来自不同来源的数据量不断增长，组织需要更快地处理其数据，以便快速做出明智的业务决策。为了大规模处理数据，组织需要灵活地调配资源，来管理他们从移动设备、应用程序、卫星、市场营销和销售、运营数据存储、基础设施等接受的信息。

通过水平扩缩和容错工作流程，Step Functions 可以运行数百万个并发执行。在 `Parallel 工作流程状态` 状态下使用并行执行，可以更快地处理数据。或者，可以使用 `Map 状态工作流程。` 状态的动态并行性来迭代数据存储（例如 Amazon S3 存储桶）中的大型数据集。Step Functions 还提供重试失败执行的功能，或选择特定路径来处理错误，而无需管理复杂的错误处理过程。

Step Functions 直接与由提供的其他数据处理服务集成，Amazon例如[Amazon Batch](connect-batch.md)用于批处理、用于大数据处理、用于数据准备的 A [mazon EMR](connect-emr.md)、[Amazon Glue](connect-glue.md)用于数据分析和计算的 [Athena](connect-athena.md)。[Amazon Lambda](connect-lambda.md)

客户使用 Step Functions 完成的数据处理工作流类型的示例包括：

**文件、视频和图像处理**
+ 将一系列视频文件转换为大小或分辨率不同的文件，从而适配显示这些文件的设备，例如手机、笔记本电脑或电视。
+ 将用户上传的大量照片转换为缩略图或各种分辨率的图像，以便在用户的网站上显示。
+ 将半结构化数据（例如 CSV 文件）与非结构化数据（例如发票）结合起来，生成每月发送给业务利益相关者的业务报告。
+ 将卫星收集的地球观测数据转换为相互对应的格式，然后添加在地球上收集的其他数据来源以获得更多见解。
+ 从各种运输方式中获取产品的运输日志，并使用蒙特卡罗模拟进行优化，然后将报告发送回使用您的运输运送货物的组织和人员。

**协调提取、转换、加载 (ETL) 任务：**
+ 使用一系列数据准备步骤，将销售机会记录与营销指标数据集相结合Amazon Glue，并生成可在整个组织中使用的商业智能报告。
+ 创建、启动和终止用于大数据处理的 Amazon EMR 集群。

**批处理和高性能计算 (HPC) 工作负载：**
+ 构建基因组二级分析管道，将原始的全基因组序列处理成变异调用。将原始文件与参考序列对齐，并使用动态并行调用指定染色体列表上的变异。
+ 通过使用不同的电气和化合物模拟各种布局，提高下一代移动设备或其他电子产品的生产效率。通过各种模拟对工作负载进行大批量处理，以便获得最佳设计。

## 机器学习
<a name="use-cases-machine-learning"></a>

机器学习为组织提供了一种方法，可快速分析收集到的数据来识别模式，并在做出决策时尽可能减少人为干预。机器学习始于一组初始数据，即*训练数据*。训练数据可提高机器学习模型的预测准确性，并作为模型学习的基础。经过训练的模型在准确性达到要求，足以满足业务需要后，便可以将模型部署到生产中。[Github 上的 Amazon Step Functions 数据科学项目](https://github.com/aws/aws-step-functions-data-science-sdk-python)是一个开源库，它提供使用亚马逊 A SageMaker I 和 Step Functions 预处理数据、训练然后发布模型的工作流程。

预处理现有数据集是组织创建训练数据的常用方式。这种预处理方法会添加信息，例如标注图像中的对象、注释文本或处理音频。要预处理数据，你可以使用Amazon Glue，也可以创建在 Jupyter Notebook 中运行的 SageMaker AI 笔记本实例。数据准备就绪后，可以将其上传到 Amazon S3 以供访问。训练机器学习模型时，可以调整每个模型的参数来提高准确性。

Step Functions 提供了一种在 SageMaker AI 上编排 end-to-end机器学习工作流程的方法。这些工作流可能包括数据预处理、后处理、特征工程、数据验证和模型评估。在将模型部署到生产后，可以优化和测试新方法，来持续改善业务成果。您可以直接在 Python 中创建生产就绪型工作流，也可以使用 Step Functions 数据科学开发工具包复制该工作流，体验新选项，然后将改进后的工作流投入到生产中。

客户使用 Step Functions 的机器学习工作流类型包括：

**欺诈侦测**
+ 识别并防止欺诈性交易（例如信用欺诈）的发生。
+ 使用经过训练的机器学习模型侦测并预防账户盗用。
+ 识别促销滥用行为，包括创建虚假账户，以便您可以快速采取行动。

**个性化和推荐**
+ 根据对目标客户兴趣的预测，向其推荐产品。
+ 预测客户是否会将其账户从免费套餐升级为付费订阅。

**数据扩充**
+ 将数据扩充作为预处理的一部分，为更精确的机器学习模型提供更好的训练数据。
+ 为文本和音频摘录添加注释，以便添加语法信息，例如讽刺和俚语。
+ 为图像中的其他对象添加标签，为模型学习提供关键信息，例如对象是苹果、篮球、岩石还是动物。

## 微服务编排
<a name="use-cases-orchestration"></a>

Step Functions 提供了管理微服务工作流程的选项。

微服务架构将应用程序分解为松耦合的服务。这样做的好处包括提高可扩展性、增强弹性和加快上市时间。每个微服务都是独立的，因此无需扩展整个应用程序，即可轻松纵向扩展单个服务或功能。各项服务为松耦合，以便独立的团队可以专注于单个业务流程，而无需了解整个应用程序。

微服务还提供适合您业务需求的各个组件，可在不重写整个工作流程的情况下为您提供灵活性。不同的团队可以使用自己选择的编程语言和框架来处理其微服务。

对于长时间运行的工作流程，可以将标准工作流程与 Amazon Fargate 集成一起使用，来编排在容器中运行的应用程序。对于需要即时响应的短期、高容量工作流程，[同步快速工作流程](choosing-workflow-type.md#concepts-express-synchronous)是理想选择。一个示例是基于 Web 的应用程序或移动应用程序，此类应用程序要求先完成一系列步骤，然后才返回响应。您可以直接从 Amazon API Gateway 触发同步快速工作流，在工作流完成或超时之前，连接将保持打开状态。对于不需要即时响应的短期工作流，Step Functions 还提供了异步快速工作流。

使用 Step Functions 的 API 编排示例包括：

**同步或实时工作流**
+ 更改记录中的值，例如更新员工的姓氏并立即显示更改。
+ 在结账时更新订单，例如添加、移除或更改商品数量；然后立即向您的客户显示更新的购物车。
+ 运行快速处理任务，并立即将结果返回给请求者。

**容器编排**
+ 使用亚马逊 Elastic Kubernetes Service 在 Kubernetes 上运行作业，或者使用 Fargate 在亚马逊弹性容器服务 (ECS) 上运行作业，并与其他服务集Amazon成，例如使用亚马逊 SNS 发送通知，这是相同工作流程的一部分。

## IT 和安全自动化
<a name="use-cases-security-automation"></a>

借助 Step Functions，可以创建自动扩展并响应工作流程中错误的工作流程。工作流程可以自动[重试失败的任务](concepts-error-handling.md#error-handling-retrying-after-an-error)，并使用[指数回退](concepts-error-handling.md#error-handling-examples)来处理错误。

在 IT 自动化场景中，错误处理对于管理复杂而耗时的操作至关重要，例如升级和修补软件、部署安全更新以修复漏洞、选择基础设施、同步数据以及路由支持票证。通过自动执行重复性和耗时的任务，组织可以快速、一致地大规模完成例行操作。这样，就可以在满足运营需求的同时，将重点转移到战略性工作上，如功能开发、复杂的支持请求和创新。

当工作流程需要人工干预才能继续推进时，例如对信用额度大幅增加进行审批，您可以在 Step Functions 中定义分支逻辑，以便低于限额的申请会自动获得批准，而达到该限额的申请则需要人工审批。在需要人工审批的情况下，Step Functions 可以暂停工作流程，等待人工响应，然后在收到响应后继续推进工作流程。

自动化工作流程的一些示例包括以下各项：

IT 自动化
+ 自动修复诸如打开 SSH 端口、磁盘空间不足或授予对 Amazon S3 存储桶的公开访问权限之类的事件。
+ 自动部署Amazon CloudFormationStackSets。

**安全自动化**
+ 自动响应用户和用户访问密钥被泄露的场景。
+ 根据策略措施自动修复安全事件响应，例如将操作限制在特定范围内。 ARNs
+ 在员工收到网络钓鱼电子邮件的几秒钟内发出警告。

**人工审批**
+ 自动进行机器学习模型训练，然后在部署更新的模型之前，获得数据科学家对模型的批准。
+ 根据情绪分析自动发送客户反馈，从而快速将负面评论上报以供审核。