

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di Amazon States Language per definire i flussi di lavoro Step Functions
<a name="concepts-amazon-states-language"></a>

Amazon States Language è un linguaggio strutturato basato su JSON utilizzato per definire la tua macchina a stati, una raccolta di [stati](workflow-states.md), che può funzionare (`Task`stati), determinare a quali stati passare a quelli successivi (`Choice`stati), interrompere un'esecuzione con un errore (`Fail`stati) e così via. 

Per ulteriori informazioni, consulta la [Amazon States Language Specification (Specifica del linguaggio degli stati di Amazon)](https://states-language.net/spec.html) e [Statelint](https://github.com/awslabs/statelint), uno strumento che consente di convalidare il codice di Amazon States Language.

Per creare una macchina a stati sulla [console Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) utilizzando Amazon States Language, consulta [Getting Started](getting-started.md).

**Nota**  
Se definisci le tue macchine a stati al di fuori della console di Step Functions, ad esempio in un editor di tua scelta, devi salvare le definizioni delle tue macchine a stati con l'estensione *.asl.json*.

## Esempio di specifica del linguaggio Amazon States (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
    }
  }
}
```