Development options
You can implement your Amazon Step Functions state machines in several ways, such as using the console, the SDKs, or a local version of Step Functions for testing and development.
Topics
Step Functions console
You can define a state machine using the Step Functions console
The Creating a Lambda State Machine tutorial uses this technique to create a simple state machine, execute it, and view its results.
Data flow simulator
You can design, implement and debug workflows in the Step Functions console.
You
can also control the flow of data in your workflows by using
JsonPath
input and output processing. Use the data flow
simulator in the Step Functions consoleInputPath
, Parameters
, ResultSelector
,
OutputPath
, and ResultPath
.
Amazon SDKs
Step Functions is supported by the Amazon SDKs for Java, .NET, Ruby, PHP, Python (Boto 3), JavaScript, Go, and C++. These SDKs provide a convenient way to use the Step Functions HTTPS API actions in multiple programming languages.
You can develop state machines, activities, or state machine starters using the API actions exposed by these SDK libraries. You can also access visibility operations using these libraries to develop your own Step Functions monitoring and reporting tools.
To use Step Functions with other Amazon services, see the reference documentation for the current
Amazon SDKs and Tools for Amazon Web
Services
Note
Step Functions only supports HTTPS endpoints.
Standard and Express workflows
When you create a new state machine, you must select a Type
of either
Standard or Express. In both cases, you define
your state machine using the Amazon States Language. Your state machine executions will behave differently,
depending on which Type you select. The Type you
choose can't be changed after your state machine is created.
See Logging using CloudWatch Logs for more information.
HTTPS service API
Step Functions provides service operations that are accessible through HTTPS requests. You can use these operations to communicate directly with Step Functions and to develop your own libraries in any language that can communicate with Step Functions through HTTPS.
You can develop state machines, workers, or state machine starters using the service API actions. You can also access visibility operations through the API actions to develop your own monitoring and reporting tools.
For detailed information about API actions, see the Amazon Step Functions API Reference.
Development environments
You must set up a development environment that is compatible with the programming language that you plan to use.
For example, to develop for Step Functions using Java, you must install a Java development environment, such as the Amazon SDK for Java, on each of your development workstations. If you use Eclipse IDE for Java Developers, you should also install the Amazon Toolkit for Eclipse. This Eclipse plugin adds features that are useful for developing on Amazon.
If your programming language requires a runtime environment, you must set up the environment on each computer where these processes will run.
Endpoints
To reduce latency and store data in a location that meets your requirements, Step Functions provides endpoints in different Amazon Regions.
Each endpoint in Step Functions is completely independent. A state machine or activity exists
only within the Region where it was created. Any state machines and activities that you
create in one Region don't share any data or attributes with those created in another
Region. For example, you can register a state machine named STATES-Flows-1
in
two different Regions. The STATES-Flows-1
state machine in one region won't
share data or attributes with the STATES-Flow-1
state machine in the other
region.
For a list of Step Functions endpoints, see Amazon Step Functions Regions and Endpoints in the Amazon Web Services General Reference.
Amazon CLI
You can access many Step Functions features from the Amazon Command Line Interface (Amazon CLI). The Amazon CLI is an
alternative to using the Step Functions console
You can use Step Functions commands in the Amazon CLI to start and manage executions, poll for activities, record task heartbeats, and more. For a complete list of Step Functions commands, descriptions of the available arguments, and examples showing their use, see the Amazon CLI Command Reference.
Amazon CLI commands follow the Amazon States Language closely, so you can use the Amazon CLI to learn about the Step Functions API actions. You can also use your existing API knowledge to prototype code or perform Step Functions actions from the command line.
Step Functions Local
For testing and development purposes, you can install and run Step Functions on your local machine. With Step Functions Local, you can start an execution on any machine.
The local version of Step Functions can invoke Amazon Lambda functions, both in Amazon and when running locally. You can also coordinate other supported Amazon services. For more information, see Testing state machines locally.
Note
Step Functions Local uses dummy accounts to work.
Amazon Toolkit for Visual Studio Code
You can use VS Code to interact with remote state machines and develop state machines locally. You can create or update state machines, list existing state machines, and execute or download a state machine. VS Code also lets you create new state machines from templates, see a visualization of your state machine, and provides code snippets, code completion, and code validation.
For more information, see the Amazon Toolkit for Visual Studio Code User Guide
Amazon Serverless Application Model and Step Functions
Step Functions is integrated with the Amazon Serverless Application Model, which lets you integrate workflows with Lambda functions, APIs and events to create serverless applications.
You can also use the Amazon SAM CLI in conjunction with the Amazon Toolkit for Visual Studio Code as part of an integrated experience.
For more information, see Amazon Step Functions and Amazon SAM.
Definition format support
Step Functions offers a variety of tools that lets you provide your state machine definitions in different formats. An Amazon States Language (ASL) definition that specifies the details of your state machine can be provided as either a string, or as a serialized object using JSON or YAML.
Note
YAML allows single line comments. Any YAML comments provided in the state machine
definition portion of a template will not be carried forward into the created resource’s
definition. Instead, you can use the Comment
property within the state
machine definition. For more information, see the State Machine Structure page.
The following table shows which tools support ASL-based definitions.
Definition format support by tool | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
JSON | YAML | Stringified Amazon States Language | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Step Functions Console | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS Service API | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon CLI | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Step Functions Local | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon Toolkit for Visual Studio Code | ✓ | ✓ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon SAM | ✓ | ✓ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Amazon CloudFormation | ✓ | ✓ | ✓ |
Note
Amazon CloudFormation and Amazon SAM also allow you to upload your state machine definitions to Amazon S3 in JSON or YAML format, and to provide the definition's Amazon S3 location in the template. This can improve the readability of your templates when your state machine definition is complex. For more information see the AWS::StepFunctions::StateMachine S3Location page.
The following example Amazon CloudFormation templates show how you can provide the same state machine definition using different input formats.