本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开发选项
您可以通过多种方式实现 Amazon Step Functions 状态机,例如使用控制台、软件开发工具包或本地版本的 Step Functions 进行测试和开发。
主题
Step Functions 控制台
您可以使用 Step Functions 控制台
创建 Lambda 状态机教程使用此方法创建简单的状态机、执行该状态机并查看其结果。
数据流模拟器
您可以在 Step Functions 控制台中设计、实施和调试工作流。您还可以使用 JsonPath
输入和输出处理来控制工作流中的数据流。使用 Step Functions 控制台中的数据流模拟器InputPath
、Parameters
、ResultSelector
、OutputPath
和 ResultPath
。
有关更多信息,请参阅数据流模拟器。
Amazon 软件开发工具包
适用于 Java、.NET、Ruby、PHP、Python(Boto 3)、Go 和 C++ 的 Amazon 软件开发工具包支持 Step F JavaScript unctions。这些开发工具包提供了在各种编程语言中使用 Step Functions HTTPS API 操作的便捷方式。
您可以利用这些开发工具包库提供的 API 操作开发状态机、活动或状态机启动器。您还可以使用这些库访问可见性操作,以开发您自己的 Step Functions 监控和报告工具。
要将 Step Functions 与其他 Amazon 服务一起使用,请参阅适用于亚马逊 Web Amazon Services 的当前软件开发工具包和工具的
注意
Step Functions 仅支持 HTTPS 端点。
标准和快速工作流
创建新的状态机时,您必须在 Type
处选择标准或快速。在这两种情况下,都可以使用 Amazon States Language 定义状态机。状态机的执行方式将有所不同,具体取决于您选择的类型。创建状态机后,无法更改您选择的类型。
请参阅使用 CloudWatch Logs 进行日志记录了解更多信息。
HTTPS 服务 API
Step Functions 提供可通过 HTTPS 请求访问的服务操作。您可以使用这些操作直接与 Step Functions 通信,还可以使用任何可通过 HTTPS 与 Step Functions 通信的语言来开发自己的库。
您可以使用服务 API 操作开发状态机、工作线程或状态机启动器。您还可以通过 API 操作访问可见性操作,以开发您自己的监控和报告工具。
有关 API 操作的详细信息,请参阅 Amazon Step Functions API 参考。
开发环境
您必须设置与计划使用的编程语言兼容的开发环境。
例如,要使用 Java 为 Step Functions 进行开发,必须在每个开发工作站上安装 Java 开发环境 Amazon SDK for Java,例如。如果您使用 Eclipse IDE for Java Developers,则还应安装 Amazon Toolkit for Eclipse。此 Eclipse 插件提供了在 Amazon 开发中非常有用的功能。
如果您的编程语言需要运行时环境,则必须在运行这些进程的每台计算机上设置该环境。
端点
为了减少延迟并将数据存储在符合您要求的位置,Step Functions 提供了不同 Amazon 区域的终端节点。
Step Functions 中的每个端点都完全独立。一个状态机或活动仅存在于创建它的区域中。您在一个区域中创建的任意状态机或活动,不会与在其他区域中创建的状态机或活动分享任何数据或属性。例如,您可以在两个不同区域中注册名为 STATES-Flows-1
的状态机。一个区域中的 STATES-Flows-1
状态机不会与另一个区域的 STATES-Flow-1
状态机共享数据或属性。
有关 Step Functions 端点的列表,请参阅《Amazon Web Services 一般参考》中的Amazon Step Functions 区域和端点。
Amazon CLI
您可以从 Amazon Command Line Interface (Amazon CLI) 访问许多 Step Functions 功能。可以替代使用 St Amazon CLI ep Functions 控制台
您可以在 Amazon CLI 中使用 Step Functions 命令来启动和管理执行、轮询活动、记录任务检测信号等。有关 Step Functions 命令的完整列表、可用参数的说明以及展示它们使用方法的示例,请参阅 Amazon CLI 命令参考。
Amazon CLI 命令严格遵循亚马逊州立大学的语言,因此您可以使用 Amazon CLI 来了解 Step Functions API 操作。您还可以使用现有 API 知识创建代码原型,或者从命令行执行 Step Functions 操作。
Step Functions Local
要进行测试和开发,您可以在本地计算机上安装并运行 Step Functions。使用 Step Functions Local,您可以在任何计算机上启动执行。
本地版本的 Step Functions 可以在本地运行 Amazon 和运行时调用 Amazon Lambda 函数。您还可以协调其他支持的 Amazon 服务。有关更多信息,请参阅在本地测试状态机。
注意
Step Functions Local 使用虚拟账户来工作。
Amazon Toolkit for Visual Studio Code
您可以使用 VS Code 与远程状态机交互,并在本地开发状态机。您可以创建或更新状态机、列出现有状态机、执行或下载这些状态机。VS Code 还允许您从模板创建新的状态机,查看状态机的可视化效果,并提供代码片段、代码完成和代码验证。
有关更多信息,请参阅《 Amazon Toolkit for Visual Studio Code 用户指南》
Amazon Serverless Application Model 和 Step Functions
Step Functions 与集成 Amazon Serverless Application Model,允许您将工作流程与 Lambda 函数、API 和事件集成在一起,以创建无服务器应用程序。
您也可以将 Amazon SAM CLI 与结合使用 Amazon Toolkit for Visual Studio Code ,作为集成体验的一部分。
有关更多信息,请参阅 Amazon Step Functions 和 Amazon SAM。
Terraform 和 Step Functions
Terraform
有关更多信息,请参阅使用 Terraform 部署状态机。
定义格式支持
Step Functions 提供了多种工具,可让您以不同的格式提供状态机定义。指定状态机详细信息的 Amazon States Language (ASL) 定义可以作为字符串提供,也可以使用 JSON 或 YAML 作为序列化对象提供。
注意
YAML 允许使用单行注释。模板的状态机定义部分中提供的任何 YAML 注释都不会延续到所创建资源的定义中。相反,您可以在状态机定义中使用 Comment
属性。有关更多信息,请参阅状态机结构页面。
下表显示了哪些工具支持基于 ASL 的定义。
各工具支持定义格式 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
JSON | YAML | Stringified Amazon States Language | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Step Functions 控制台 | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS 服务 API | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon CLI | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Step Functions Local | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon Toolkit for Visual Studio Code | ✓ | ✓ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon SAM | ✓ | ✓ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon CloudFormation | ✓ | ✓ | ✓ |
注意
Amazon CloudFormation Amazon SAM 还允许您将状态机定义以 JSON 或 YAML 格式上传到 Amazon S3,并在模板中提供定义的 Amazon S3 位置。当状态机定义很复杂时,这可以提高模板的可读性。欲了解更多信息,请参阅 AWS::StepFunctions::StateMachine S3Location 页面。
以下示例 Amazon CloudFormation 模板展示了如何使用不同的输入格式提供相同的状态机定义。