开发选项 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

开发选项

你可以实现你的Amazon Step Functions状态机有多种方式,例如使用控制台、开发工具包或本地版本。Step Functions用于测试和开发。

Step Functions 控制

您可以使用定义状态机Step Functions 控制. 您可以使用使用,在云中编写复杂的状态机而无需使用本地开发环境。Amazon Lambda为你的任务提供代码. 写完之后,你就可以使用使用 Amazon 状态语言定义状态机的 Step Functions 控制台。

这些区域有:创建 Lambda 状态机教程使用此方法创建简单的状态机、执行该状态机并查看其结果。

数据流模拟器

您可以在 Step Functions 控制台中设计、实施和调试工作流程。Y你还可以通过学习和使用来控制数据流通过你的工作流JsonPath输入和输出处理。使用Step Functions 控制台中的数据流模拟器了解信息如何从州到州之间的流动、并了解如何过滤和操作数据一个. 此工具模拟s每个领域那个Step Functions用于处理数据,例如InputPathParametersResultSelectorOutputPath, 和ResultPath.

Amazon 开发工具包

Step Functions 受Amazon适用于 Java、.NET、Ruby、PHP、Python (Boto 3)、JavaScript、Go 和 C++ 的开发工具包。这些开发工具包提供了使用中的 Step Functions HTTPS API 操作的便捷方式。多个编程语言。

您可以利用这些开发工具包库提供的 API 操作开发状态机、活动或状态机启动器。您还可以使用这些库访问可见性操作,以开发您自己的 Step Functions 监控和报告工具。

与其他一起使用 Step FunctionsAmazon有关服务,请参阅当前的参考文档Amazon和开发工具包用于 Amazon Web Services 的工具.

注意

Step Functions仅限支持HTTPS 终端节点s.

标准和快速工作流

创建新的状态机时,您必须在 Type 处选择 Standard (标准)Express (快速)。在这两种情况下,都可以使用 Amazon 状态机定义状态机。状态机的执行方式将有所不同,具体取决于您选择的 Type (类型)。这些区域有:类型您选择无法在创建状态机后更改。

参阅 使用 CloudWatch Logs 了解更多信息。

HTTPS 服务 API

Step Functions 提供可通过 HTTPS 请求访问的服务操作。您可以使用这些操作直接与 Step Functions 通信,还可以使用任何可通过 HTTPS 与 Step Functions 通信的语言来开发自己的库。

您可以使用服务 API 操作开发状态机、工作线程或状态机启动器。您还可以通过 API 操作访问可见性操作,以开发您自己的监控和报告工具。

有关 API 操作的详细信息,请参阅Amazon Step FunctionsAPI 参考.

开发环境

你必须设置开发环境这是兼容的您计划使用的编程语言。

例如,要使用 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 Step Functions中的Amazon一般参考.

Amazon CLI

您可以通过访问多种 Step Functions 功能Amazon Command Line Interface(Amazon CLI)。这些区域有:Amazon CLI 是替代使用Step Functions 控制或者,在有些情况下,使用 Step Functions API 操作来编程。例如,您可以使用Amazon CLI创建状态机,然后列出您的现有的状态机。

你可以使用 Step Functions 命令Amazon CLI 要启动和管理执行、轮询活动、记录任务检测信号。,以及其他. 有关 Step Functions 命令的完整列表、 对可用参数的描述、以及显示其使用情况的示例,请参阅Amazon CLI命令参考.

Amazon CLI命令与亚马逊状态语言密切相关,因此,您可以使用Amazon CLI了解 Step Functions API 操作。您还可以使用现有 API 知识创建代码原型,或者从命令行执行 Step Functions 操作。

Step Functions 本地

要进行测试和开发,您可以在本地计算机上安装和运行 Step Functions。使用 Step Functions Local,您可以在任何计算机上启动执行。

Step Functions 的本地版本可以调用Amazon Lambda函数,无论是在Amazon和什么时候在本地运行。您还可以协调其他支持的 Amazon 服务。有关更多信息,请参阅 在本地测试 Step Functions 状态机

Amazon Toolkit for Visual Studio Code

您可以使用VS 代码与远程状态机进行交互并在本地开发状态机。您可以创建或更新状态机、列出现有状态机、并执行或下载状态机. VS 代码您还允许您从模板创建新的状态机、查看状态机的可视化效果,并提供代码片段、代码片段、代码完成和代码验证。

有关更多信息,请参阅 。这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

支持定义格式

Step Functions 提供了多种工具这可以让你以不同的格式提供状态机定义。您可以提供指定状态机详细信息的 Amazon 状态机 (ASL) 定义。作为字符串,或者作为使用 JSON 或 YAML 的序列化对象.

注意

YAML 允许单行注释。模板的状态机定义部分中提供的任何 YAML 注释都不会转移到创建的资源的定义中。相反,您可以使用Comment状态机定义中的属性。有关更多信息,请参阅 状态机结构 页面。

下表显示了哪些工具支持基于 ASL 的定义。

按工具支持定义格式
JSON YAML Strified Amazon 状态语言
Step Functions 控制
HTTPS 服务 API
Amazon CLI
Step Functions 本地
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模板显示了如何使用不同的输入格式提供相同的状态机定义。

JSON with Definition
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "Definition": { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
JSON with DefinitionString
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "DefinitionString": "{\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Pass\",\n \"End\": true\n }\n }\n}" } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
YAML with Definition
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true Definition: # This is a YAML comment. This will not be preserved in the state machine resource's definition. Comment: This is an ASL comment. This will be preserved in the state machine resource's definition. StartAt: HelloWorld States: HelloWorld: Type: Pass End: true StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachine
YAML with DefinitionString
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true DefinitionString: | { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachine