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.
-
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.
-
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": "{}"
}