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
Step Functions Local no es compatible
Step Functions Local no proporciona paridad de funciones y no es compatible.
Podrías considerar soluciones de terceros que emulen Step Functions con fines de prueba.
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:
Paso 1: Configurar AWS SAM
AWS Serverless Application Model (AWS SAM) CLI Local requiere la instalación de AWS Command Line Interface AWS SAM, y Docker.
-
nota
Antes de instalar el AWS SAM CLI, debe instalar el AWS CLI y Docker. Consulte los requisitos previos para instalar el. AWS SAM CLI
-
Lea la documentación de Inicio rápido de AWS SAM. 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 CLI Local
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"}
Introduzca CTRL+C para finalizar la LambdaAPI.
Paso 3: Iniciar AWS SAM CLI Local
Ahora que ha probado que la función es correcta, 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
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 de Step Functions Local (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: Crear una máquina de estado que haga referencia su función AWS SAM CLI Local
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.
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 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: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": "{}"
}