Tutorial: Probar flujos de trabajo con Step Functions y AWS SAM CLILocal - AWS Step Functions

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 CLILocal

Con ambos AWS Step Functions y AWS Lambda si se ejecuta en su máquina local, puede probar su máquina de estado y las funciones de Lambda sin implementar el código en AWS.

Para obtener más información, consulte los temas siguientes:

Paso 1: Configurar AWS SAM

AWS Serverless Application Model (AWS SAM) CLI Local requiere el AWS Command Line Interface, AWS SAM, y que Docker estén instalados.

  1. Instale el AWS SAM CLI.

    nota

    Antes de instalar el AWS SAM CLI, es necesario instalar el AWS CLI y Docker. Consulte los requisitos previos para instalar el AWS SAM CLI.

  2. Revisa el AWS SAMDocumentación de inicio rápido. Asegúrese de seguir los pasos para hacer lo siguiente:

    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 CLILocal

Ahora que lo has instalado AWS SAM y creó la función Hello World Lambda, puede probar la función. 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

Esto generará una respuesta similar a la siguiente:

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

Introduzca CTRL+C para finalizar la LambdaAPI.

Paso 3: Empezar AWS SAM CLILocal

Ahora que ha comprobado que la función funciona, comience AWS SAM CLILocal. En el directorio sam-app, introduzca el siguiente comando:

sam local start-lambda

Esto empieza AWS SAM CLILocal 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

JARFichero

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 123456789012, region us-east-1

Docker

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 local de Step Functions (versión descargable) en 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.

Paso 5: Cree una máquina de estados que haga referencia a su AWS SAM CLIFunción local

Cuando Step Functions Local esté en ejecución, cree una máquina de estados que haga referencia a la HelloWorldFunction que ha inicializado. Paso 1: Configurar AWS 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:us-east-1:123456789012:function:HelloWorldFunction\",\ \"End\": true\ }\ }\ }\" --name "HelloWorld" --role-arn "arn:aws:iam::012345678901:role/DummyRole"

Esto creará una máquina de estados y proporcionará un nombre de recurso de Amazon (ARN) que podrá utilizar para iniciar una ejecución.

{ "creationDate": 1548805711.403, "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

Paso 6: Iniciar una ejecución de su máquina de estado local

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

aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:us-east-1:123456789012: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:us-east-1:123456789012:execution:HelloWorld:test" }

Ahora que Step Functions se ejecuta de forma local, puede interactuar con él mediante el 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:us-east-1:123456789012: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:us-east-1:123456789012:execution:HelloWorld:test", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "stopDate": 1549056351.276, "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", "input": "{}" }