

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.

# Tutorial: Probar flujos de trabajo con Step Functions y AWS SAM CLI Local
<a name="sfn-local-lambda"></a>

**Step Functions Local no es compatible**  
Step Functions Local **no** proporciona paridad de características y **no es compatible**.  
Podría considerar soluciones de terceros que emulen Step Functions con fines de prueba.  
Como alternativa a Step Functions Local, puedes usar la TestState API para realizar pruebas unitarias de la lógica de tu máquina de estados antes de implementarla en tu AWS cuenta. Para obtener más información, consulta [Probar máquinas de estado con la TestState API](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html).

Con ambas funciones AWS Step Functions y AWS Lambda ejecutándose en su máquina local, puede probar la máquina de estado y las funciones de Lambda sin tener que implementar el código en ellas. AWS

Para obtener más información, consulte los temas siguientes:
+ [Prueba de máquinas de estado con Step Functions Local (no compatible)](sfn-local.md)
+ [Configurar AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)

## Paso 1: Configurar AWS SAM
<a name="install-sam"></a>

AWS Serverless Application Model (AWS SAM) CLI Local requiere la instalación de AWS Command Line Interface AWS SAM, y Docker. 

1. [Instale la AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html).
**nota**  
Antes de instalar la AWS SAM CLI, debe instalar AWS CLI y Docker. Consulte los [requisitos previos](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) para instalar la AWS SAM CLI.

1. Lea la documentación de [Inicio rápido de AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html). Asegúrese de seguir los pasos para hacer lo siguiente:

   1. [Inicializar la aplicación](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-setup-local-app)

   1.  [Probar la aplicación localmente](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-test-locally) 

   

   Esto crea un directorio `sam-app` y crea un entorno que incluye una función de Lambda Hello World basada en Python.

   

## Paso 2: Probar AWS SAM CLI local
<a name="test-local-lambda"></a>

Ahora que ha instalado AWS SAM y creado la función Lambda de Hello World, puede probarla. En el directorio `sam-app`, introduzca el siguiente comando:

```
sam local start-api
```

Se lanzará una instancia local de su función de Lambda. Debería ver una salida similar a esta:

```
2019-01-31 16:40:27 Found credentials in shared credentials file: ~/.aws/credentials
2019-01-31 16:40:27 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
2019-01-31 16:40:27 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2019-01-31 16:40:27  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Abra un navegador y escriba lo siguiente.

```
http://127.0.0.1:3000/hello
```

La salida será una respuesta similar a la siguiente:

```
{"message": "hello world", "location": "72.21.198.66"}
```

Pulse **CTRL\$1C** para finalizar la API de Lambda.

## Paso 3: iniciar AWS SAM CLI local
<a name="start-local-lambda"></a>

Ahora que ha comprobado que la función funciona, inicie AWS SAM CLI Local. En el directorio `sam-app`, introduzca el siguiente comando:

```
sam local start-lambda
```

Esto inicia AWS SAM CLI Local y proporciona el punto final que se debe utilizar, similar al siguiente resultado:

```
2019-01-29 15:33:32 Found credentials in shared credentials file: ~/.aws/credentials
2019-01-29 15:33:32 Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint.
2019-01-29 15:33:32  * Running on http://127.0.0.1:3001/ (Press CTRL+C to quit)
```

## Paso 4: Iniciar Step Functions Local
<a name="start-stepfunctions-local"></a>

### Archivo JAR
<a name="start-local-jar"></a>

Si utiliza la versión del archivo `.jar` de Step Functions Local, inicie Step Functions y especifique el punto de conexión de Lambda. En el directorio donde extrajo los archivos `.jar`, escriba el siguiente comando:

```
java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001
```

Cuando Step Functions Local se inicie, comprueba el entorno y después las credenciales configuradas en su archivo `~/.aws/credentials`. De forma predeterminada, comienza a usar un ID de usuario ficticio y aparece como `region us-east-1`.

```
2019-01-29 15:38:06.324: Failed to load credentials from environment because Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))
2019-01-29 15:38:06.326: Loaded credentials from profile: default
2019-01-29 15:38:06.326: Starting server on port 8083 with account account-id, region us-east-1
```

### Docker
<a name="start-local-docker"></a>

En caso de que se utilice la versión de Docker de Step Functions Local, lance Step Functions con el siguiente comando:

```
docker run -p 8083:8083 amazon/aws-stepfunctions-local
```

Para obtener información sobre cómo instalar la versión de Docker de Step Functions, consulte [Configuración de Step Functions Local (versión descargable) en Docker](sfn-local.md#sfn-local-docker).

**nota**  
Puede especificar el punto de conexión con la línea de comandos o configurando variables de entorno si lanza Step Functions desde el archivo `.jar`. Para la versión de Docker, debe especificar los puntos de enlace y las credenciales en un archivo de texto. Consulte [Configurar opciones de configuración para Step Functions Local](sfn-local.md#sfn-local-config-options).

## Paso 5: Cree una máquina de estados que haga referencia a su función local de AWS SAM CLI
<a name="create-local-statemachine"></a>

Una vez que Step Functions Local se esté ejecutando, cree una máquina de estado que haga referencia a la `HelloWorldFunction` que inicializó en [Paso 1: Configurar AWS SAM](#install-sam).

```
aws stepfunctions --endpoint http://localhost:8083 create-state-machine --definition "{\
  \"Comment\": \"A Hello World example of the Amazon States Language using an AWS Lambda Local function\",\
  \"StartAt\": \"HelloWorld\",\
  \"States\": {\
    \"HelloWorld\": {\
      \"Type\": \"Task\",\
      \"Resource\": \"arn:aws:lambda:region:account-id:function:HelloWorldFunction\",\
      \"End\": true\
    }\
  }\
}\" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"
```

De esta manera, se creará una máquina de estado y se proporcionará un nombre de recurso de Amazon (ARN), que puede utilizar para iniciar una ejecución:

```
{
    "creationDate": 1548805711.403, 
    "stateMachineArn": "arn:aws:states:region:account-id:stateMachine:HelloWorld"
}
```

## Paso 6: Iniciar una ejecución de su máquina de estado local
<a name="run-local-statemachine"></a>

Una vez que haya creado una máquina de estado, inicie una ejecución. Deberá hacer referencia al punto de conexión y al ARN de la máquina de estado cuando utilice el siguiente comando **aws stepfunctions**:

```
aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:region:account-id:stateMachine:HelloWorld --name test
```

Esto inicia una ejecución denominada `test` de su máquina de estado `HelloWorld`.

```
{
    "startDate": 1548810641.52, 
    "executionArn": "arn:aws:states:region:account-id:execution:HelloWorld:test"
}
```

Ahora que Step Functions se ejecuta localmente, puede interactuar con él mediante AWS CLI. Por ejemplo, para obtener información sobre esta ejecución, utilice el siguiente comando:

```
aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:region:account-id:execution:HelloWorld:test
```

La llamada a `describe-execution` para una ejecución proporciona detalles más completos, como se indica en la siguiente salida:

```
{
    "status": "SUCCEEDED", 
    "startDate": 1549056334.073, 
    "name": "test", 
    "executionArn": "arn:aws:states:region:account-id:execution:HelloWorld:test", 
    "stateMachineArn": "arn:aws:states:region:account-id:stateMachine:HelloWorld", 
    "stopDate": 1549056351.276, 
    "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", 
    "input": "{}"
}
```