

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.

# Creación de una máquina de estado de Step Functions que utilice Lambda
<a name="tutorial-creating-lambda-state-machine"></a>

En este tutorial, creará un flujo de trabajo de un solo paso AWS Step Functions para invocar una función. AWS Lambda 

**nota**  
Step Functions se basa en *máquinas de estado* y *tareas*. En Step Functions, las máquinas de estado se denominan *flujos de trabajo* y consisten en una serie de pasos controlados en eventos. Cada paso de un flujo de trabajo se denomina *estado*. Por ejemplo, el [estado de una tarea](state-task.md) representa una unidad de trabajo que realiza otro AWS servicio, como llamar a otro Servicio de AWS o a una API. Las instancias de flujos de trabajo en ejecución que realizan tareas se denominan *ejecuciones* en Step Functions.  
Para obtener más información, consulte lo siguiente:  
[¿Qué es Step Functions?](welcome.md)
[Integración de servicios con Step Functions](integrate-services.md)

Lambda es adecuado para estados de `Task`, ya que las funciones de Lambda son *sin servidor* y fáciles de escribir. Puedes escribir código en el editor Consola de administración de AWS o en tu editor favorito. AWS se ocupa de los detalles necesarios para proporcionar un entorno informático para su función y para ejecutarla.

## Paso 1: Crear una función de Lambda
<a name="create-lambda-function"></a>

La función de Lambda recibe los datos de evento y devuelve un mensaje de bienvenida.

**importante**  
Asegúrese de que la función Lambda esté en la misma AWS cuenta y en la misma Región de AWS máquina de estados.

1. Abra la [consola de Lambda](https://console.aws.amazon.com/lambda/home); y elija **Crear función**.

1. En la página **Crear función**, elija **Diseñar desde cero**.

1. En **Nombre de la función**, introduzca `HelloFunction`.

1. Mantenga las selecciones predeterminadas para todas las demás opciones y elija **Crear función**. 

1. Tras crear la función de Lambda, copie el nombre de recurso de Amazon (ARN) de la función que aparece en la esquina superior derecha de la página. A continuación se muestra un ejemplo de ARN:

   ```
   arn:aws:lambda:region:123456789012:function:HelloFunction
   ```

1. Copie el siguiente código para la función Lambda en la sección **Código fuente** de la ***HelloFunction***página.

   ```
   export const handler = async(event, context, callback) => {
       callback(null, "Hello from " + event.who + "!");
   };
   ```

   Este código crea un saludo utilizando el campo `who` de los datos de entrada, proporcionados por el objeto `event` pasado a la función. Los datos de entrada de esta función se agregan más tarde, cuando se [inicia una nueva ejecución](#start-lambda-function). El método `callback` devuelve el saludo creado a partir de su función.

1. Elija **Implementar**.

## Paso 2: Probar la función de Lambda
<a name="test-lambda-function"></a>

Pruebe la función de Lambda para verla en acción.

1. Seleccione **Probar**

1. En **Nombre del evento**, escriba `HelloEvent`.

1. Sustituya los datos de **Evento JSON** por lo siguiente.

   ```
   {
       "who": "AWS Step Functions"
   }
   ```

   La entrada `"who"` se corresponde con el campo `event.who` de su función de Lambda y completa el saludo. Introducirá los mismos datos de entrada cuando ejecute su máquina de estado.

1. Elija **Guardar** y, a continuación, **Probar**.

1. En **Resultado de ejecución**, expanda **Detalles** para ver los resultados. 

## Paso 3: Crear una máquina de estado
<a name="create-state-machine-step"></a>

Utilice la consola de Step Functions para crear una máquina de estado que invoque la función de Lambda que creó en el [paso 1](#create-lambda-function).

1. Abra la [consola de Step Functions](https://console.aws.amazon.com/states/home), seleccione **Máquinas de estado** y, a continuación, elija **Crear máquina de estado**.
**importante**  
Asegúrese de que su máquina de estado esté en la misma AWS cuenta y región que la función Lambda que creó anteriormente.

1. Elija **Crear desde cero**.

1. Asigne un nombre a la máquina de estado y, a continuación, elija **Continuar** para editarla en Workflow Studio.

1. En el [navegador de estados](workflow-studio.md#workflow-studio-components-states) de la izquierda, asegúrese de que ha elegido la pestaña **Acciones**. A continuación, arrastre y suelte la API **Invocación de AWS Lambda ** en el estado vacío con la etiqueta **Arrastre el primer estado aquí**.

1. En el panel [Inspector](workflow-studio.md#workflow-studio-components-formdefinition) de la derecha, configure la función de Lambda:

   1. En la sección **Parámetros de la API**, elija [la función de Lambda que creó anteriormente](#create-lambda-function) en la lista desplegable **Nombre de la función**.

   1. Mantenga la selección predeterminada en la lista desplegable de **Carga útil**.

1. (Opcional) Seleccione **Definición** para ver la definición de [Amazon States Language](concepts-amazon-states-language.md) (ASL) de la máquina de estad o, que se genera automáticamente en función de las selecciones que realice en la pestaña **Acciones** y el panel **Inspector**.

1. Especifique un nombre para la máquina de estado. Para ello, elija el icono de edición situado junto al nombre de la máquina de estado predeterminada de **MyStateMachine**. A continuación, en **Configuración de máquina de estado**, especifique un nombre en el cuadro **Nombre de la máquina de estado**.

   Por ejemplo, introduzca el nombre **LambdaStateMachine**.
**nota**  
Los nombres de máquinas de estado, ejecuciones y tareas de actividad no deben superar los 80 caracteres. Estos nombres deben ser exclusivos para su cuenta y AWS región y no deben contener ninguno de los siguientes elementos:  
Espacios en blanco
Caracteres comodín (`? *`)
Caracteres entre corchetes (`< > { } [ ]`)
Caracteres especiales (`" # % \ ^ | ~ ` $ & , ; : /`)
Caracteres de control (`\\u0000` - `\\u001f` o `\\u007f` - `\\u009f`).
Step Functions acepta nombres para máquinas de estado, ejecuciones, actividades y etiquetas que contengan caracteres no ASCII. Dado que estos caracteres impedirán que Amazon registre CloudWatch datos, te recomendamos que utilices únicamente caracteres ASCII para poder realizar un seguimiento de las métricas de Step Functions.

1. (Opcional) En **Configuración de máquina de estado**, especifique otros ajustes del flujo de trabajo, como el tipo de máquina de estado y su función de ejecución.

   Para este tutorial, mantenga todas las selecciones predeterminadas en **Configuración de máquina de estado**.

1. Seleccione **Crear**.

1. En el cuadro de diálogo **Confirmar creación de rol**, elija **Confirmar** para continuar.

   También puede seleccionar **Ver configuración de rol** para volver a **Configuración de máquina de estado**.
**nota**  
Si se elimina el rol de IAM que crea Step Functions, no se podrá volver a crear más adelante. Asimismo, si se modifica el rol (por ejemplo, eliminando Step Functions de las entidades principales de la política de IAM), Step Functions no podrá restablecer la configuración original más adelante. 

## Paso 4: Ejecutar la máquina de estado
<a name="start-lambda-function"></a>

Después de crear la máquina de estado, puede ejecutarla.

1. En la página **State Machines**, selecciona **LambdaStateMachine**.

1. Seleccione **Iniciar ejecución**.

   Aparece el cuadro de diálogo **Iniciar ejecución**.

1. (Opcional) Introduzca un nombre de ejecución personalizado para anular el valor predeterminado generado.
**Nombres y registros con caracteres no ASCII**  
Step Functions acepta nombres para máquinas de estado, ejecuciones, actividades y etiquetas que contengan caracteres no ASCII. Dado que estos caracteres impedirán que Amazon registre CloudWatch datos, te recomendamos que utilices únicamente caracteres ASCII para poder realizar un seguimiento de las métricas de Step Functions.

1. En el área **Entrada**, sustituya los datos de ejecución de ejemplo por lo siguiente.

   ```
   {
       "who" : "AWS Step Functions"
   }
   ```

    `"who"` es el nombre de clave que su función de Lambda utiliza para obtener el nombre de la persona a la que se saluda.

1. Seleccione **Iniciar ejecución**.

   Se inicia la ejecución de su máquina de estado y aparece una nueva página que muestra la ejecución en funcionamiento.

1. La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como *Detalles de la ejecución*. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

   Para revisar los resultados de la ejecución, elija los estados individuales en la **Vista de gráfico** y, a continuación, elija las pestañas individuales del panel [Detalles del paso](concepts-view-execution-details.md#exec-details-intf-step-details) para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página *Detalles de la ejecución*, consulte [Información general sobre los detalles de ejecución](concepts-view-execution-details.md#exec-details-interface-overview).

**nota**  
También puede transferir cargas útiles al invocar a Lambda desde una máquina de estado. Para obtener más información y ejemplos sobre cómo invocar a Lambda pasando la carga útil en el campo `Parameters`, consulte [Invoca una AWS Lambda función con Step Functions](connect-lambda.md).