

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de Amazon States Language para definir los flujos de trabajo de Step Functions
<a name="concepts-amazon-states-language"></a>

Amazon States Language es un lenguaje estructurado basado en JSON que se utiliza para definir máquinas de estado: un conjunto de [estados](workflow-states.md), que realizan tareas (estados `Task`), determinan a qué estados se debe pasar a continuación (estados `Choice`), detienen una ejecución con un error (estados `Fail`), etcétera. 

Para obtener más información, consulte la [Especificación de Amazon States Language](https://states-language.net/spec.html) y [Statelint](https://github.com/awslabs/statelint), una herramienta que valida el código de Amazon States Language.

Para crear una máquina de estados en la [consola de Step Functions](https://console.aws.amazon.com/states/home?region=us-east-1#/) con Amazon States Language, consulte [Introducción](getting-started.md).

**nota**  
Si define las máquinas de estado fuera de la consola de Step Functions, por ejemplo, en un editor de su elección, debe guardar las definiciones de las máquinas de estado con la extensión *.asl.json*.

## Ejemplo de especificación de idioma de 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
    }
  }
}
```