# Step Functions

[Document](https://docs.aws.amazon.com/step-functions/) | [Workshop ](https://catalog.workshops.aws/stepfunctions/en-US)|

## Overview

* Similar to ***Microsoft Power Automate.*** A *<mark style="color:red;">GUI workflow</mark>*.
* Help build visual workflow to translate business requirements to technical requirements.
* Build apps fast, manage logic with `low-code`.
* Built-in try/catch, retry, rollback.
* Keywords: `orchestration`

## Features

### Workflow configuration

### Built-in service primitives

### AWS service integration

* Lambda, ECS, Fargate
* DynamoDB
* SNS, SQS
* AWS Batch, AWS Glue
* SageMaker

### Coordination of distributed apps

Can make http connection between app hosted on EC2, on-premises, mobile devices.

### Components reuse

### Built-in error handling

* Retry failed or time-out tasks.
* Response differently depend on type of error.

### History execution

## Cost

Pay for each *state transition*.

## Concepts

* ***Amazon State Language***: is a JSON-based, structure language use to define state machine.
* `"Type": "Parallel"` use to create parallel branches state machine.
* ***Task***: is a single unit of work and choice.
* ***State***: a `step` in the workflow
  * **Pass state**: debugging (just pass the input to its output, or inject some fixed data)
  * **Task state**: do some works in your state machine. eg.Lambda
  * **Choice state**: if-else statement
  * **Wait state**: delay for a certain amount of time
  * **Success state:** stop & mark as success
  * **Fail state:** stop & mark as failure.
  * **Parallel state**: create parallel branches of the same input
  * **Map state**: as LOOP statement (execute the same step for multiple entries)
* `HeartbeatSeconds`: maximum interval that the task will wait for a hearbeat signal. If an activity worker fails to send heartbeats within this interval, the state is failed. A retry policy on the state allows another activity worker to attempt to complete the state.

### **HeartbeatSeconds vs Wait State:**

* **HeartbeatSeconds**: This is a parameter used within a Task state to specify the maximum interval the task will wait for a heartbeat signal. If no heartbeat is received within this interval, the task is marked as failed and can retry based on a defined policy.
* **Wait State**: This is a state type used to introduce a deliberate delay in the execution of a state machine for a specified amount of time before transitioning to the next state. It is useful for adding pauses or delays in the workflow.

In essence, `HeartbeatSeconds` is about keeping a Task alive, while `Wait` state is about intentionally pausing the workflow.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mamawhocode.gitbook.io/aws/services/integration/step-functions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
