

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar a Amazon States Language para definir fluxos de trabalho do Step Functions
<a name="concepts-amazon-states-language"></a>

A Amazon States Language é uma linguagem estruturada baseada em JSON que é usada para definir a máquina de estado, um conjunto de [estados](workflow-states.md), que podem realizar trabalhos (estados `Task`), determinar para quais estados fazer transição (estados `Choice`), interromper uma execução com erro (estados `Fail`) e assim por diante. 

Para obter mais informações, consulte [Especificação da Amazon States Language](https://states-language.net/spec.html) e [Statelint](https://github.com/awslabs/statelint), uma ferramenta que valida o código da Amazon States Language.

Para criar uma máquina de estado no [console do Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) usando a Amazon States Language, consulte [Conceitos básicos](getting-started.md).

**nota**  
Se você definir as máquinas de estado fora do console do Step Functions, como em um editor de sua escolha, será necessário salvar as definições de máquina de estado com a extensão *.asl.json*.

## Exemplo de especificação de idioma dos estados da Amazon (JSONata)
<a name="example-amazon-states-language-specification"></a>

```
{
  "Comment": "An example of the Amazon States Language using a choice state.",
  "QueryLanguage": "JSONata",
  "StartAt": "FirstState",
  "States": {
    "FirstState": {
      "Type": "Task",
      "Assign": {
        "foo" : "{% $states.input.foo_input %}" 
        },
      "Resource": "arn:aws:lambda:region:123456789012:function:FUNCTION_NAME",
      "Next": "ChoiceState"
    },
    "ChoiceState": {
      "Type": "Choice",
      "Default": "DefaultState",
      "Choices": [
        {
          "Next": "FirstMatchState",
          "Condition": "{% $foo = 1 %}"
        },
        {
          "Next": "SecondMatchState",
          "Condition": "{% $foo = 2 %}"
        }
      ]
    },
    "FirstMatchState": {
      "Type" : "Task",
      "Resource": "arn:aws:lambda:region:123456789012:function:OnFirstMatch",
      "Next": "NextState"
    },

    "SecondMatchState": {
      "Type" : "Task",
      "Resource": "arn:aws:lambda:region:123456789012:function:OnSecondMatch",
      "Next": "NextState"
    },

    "DefaultState": {
      "Type": "Fail",
      "Error": "DefaultStateError",
      "Cause": "No Matches!"
    },

    "NextState": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:region:123456789012:function:FUNCTION_NAME",
      "End": true
    }
  }
}
```