Processing input and output in Step Functions (original) (raw)
When a Step Functions execution receives JSON input, it passes that data to the first state in the workflow as input.
With JSONata, you can retrieve state input from $states.input
. Your state machine executions also provide that initial input data in the Context object. You can retrieve the original state machine input at any point in your workflow from $states.context.Execution.Input
.
When states exit, their output is available to the very next state in your state machine. Your state inputs will pass through as state output by default, unless you modify the state output. For data that you might need in later steps, consider storing it in variables. For more info, see Passing data between states with variables.
QueryLanguage recommendation
For new state machines, we recommend the JSONata query language. In state machines that do not specify a query language, the state machine defaults to JSONPath for backward compatibility. You must opt-in to use JSONata for your state machines or individual states.
Processing input and output with JSONata
With JSONata expressions, you can select and transform data. In the Arguments
field, you can customize the data sent to the action. The result can be transformed into custom state output in the Output
field. You can also store data in variables in the Assign
field. For more info, see Transforming data with JSONata.
The following diagram shows how JSON information moves through a JSONata task state.
Processing input and output with JSONPath
Managing state and transforming data
For state machines that use JSONPath, the following fields control the flow of data from state to state: InputPath
, Parameters
,ResultSelector
, ResultPath
, and OutputPath
. Each JSONPath field can manipulate JSON as it moves through each state in your workflow.
JSONPath fields can use paths to select portions of the JSON from the input or the result. A path is a string, beginning with $
, that identifies nodes within JSON text. Step Functions paths use JsonPath syntax.
The following diagram shows how JSON information moves through a JSONPath task state. TheInputPath
selects the parts of the JSON input to pass to the task of theTask
state (for example, an AWS Lambda function). You can adjust the data that is sent to your action in the Parameters
field. Then, withResultSelector
, you can select portions of the action result to carry forward.ResultPath
then selects the combination of state input and task results to pass to the output. OutputPath
can filter the JSON output to further limit the information that's passed to the output.
Topics
- Passing data between states with variables
- Transforming data with JSONata in Step Functions
- Accessing execution data from the Context object in Step Functions
- Using JSONPath paths
- Manipulate parameters in Step Functions workflows
- Example: Manipulating state data with paths in Step Functions workflows
- Specifying state output using ResultPath in Step Functions
- Map state input and output fields in Step Functions