As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Testando fluxos de trabalho usando Step Functions e AWS SAM CLILocal
Com os dois AWS Step Functions e AWS Lambda executando em sua máquina local, você pode testar sua máquina de estado e as funções do Lambda sem implantar seu código em AWS.
Para obter mais informações, consulte os tópicos a seguir.
Etapa 1: Configurar AWS SAM
AWS Serverless Application Model (AWS SAM) O CLI local requer o AWS Command Line Interface, AWS SAM e o Docker a ser instalado.
-
nota
Antes de instalar o AWS SAM CLI, você precisa instalar o AWS CLI e Docker. Consulte os pré-requisitos para instalar o AWS SAM CLI.
-
Vá até o AWS SAMDocumentação do Quick Start. Siga as etapas para fazer o seguinte:
Isso cria um diretório
sam-app
e cria um ambiente que inclui uma função Olá, mundo do Lambda baseada em Python.
Etapa 2: Teste AWS SAM CLILocal
Agora que você instalou AWS SAM e criou a função Hello World Lambda, você pode testar a função. No diretório sam-app
, insira o comando a seguir.
sam local start-api
Isso executa uma instância local da sua função do Lambda. Você deve ver saída semelhante a:
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 um navegador e insira o seguinte:
http://127.0.0.1:3000/hello
Isso produzirá uma resposta semelhante à seguinte:
{"message": "hello world", "location": "72.21.198.66"}
Digite CTRL+C para finalizar o LambdaAPI.
Etapa 3: Iniciar AWS SAM CLILocal
Agora que você testou se a função funciona, comece AWS SAM CLILocal. No diretório sam-app
, insira o comando a seguir.
sam local start-lambda
Isso começa AWS SAM CLILocal e fornece o endpoint a ser usado, semelhante à saída a seguir:
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)
Etapa 4: Iniciar o Step Functions Local
JARArquivo
Se estiver usando a versão .jar
do arquivo do Step Functions Local, inicie o Step Functions e especifique o endpoint do Lambda. No diretório onde você extraiu os arquivos .jar
, insira o seguinte comando:
java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001
Quando o Step Functions Local for iniciado, ele verificará o ambiente e as credenciais configuradas no seu arquivo ~/.aws/credentials
. Por padrão, ele é iniciado usando um ID de usuário fictício e é listado 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
Se estiver usando a versão do Docker do Step Functions Local, execute-o com o comando a seguir.
docker run -p 8083:8083 amazon/aws-stepfunctions-local
Para obter informações sobre a instalação da versão do Docker do Step Functions, consulte Configurando o Step Functions Local (versão para download) no Docker.
nota
Você poderá especificar o endpoint por meio da linha de comando ou definindo variáveis do ambiente se executar o Step Functions a partir do arquivo .jar
. Para a versão do Docker, você deve especificar os endpoints e as credenciais em um arquivo de texto. Consulte Definindo opções de configuração para Step Functions Local.
Etapa 5: Crie uma máquina de estado que faça referência à sua AWS SAM CLIFunção local
Depois que o Step Functions Local estiver em execução, crie uma máquina de estado que faça referência à HelloWorldFunction
que você inicializou. Etapa 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"
Isso criará uma máquina de estado e fornecerá um Amazon Resource Name (ARN) que você pode usar para iniciar uma execução.
{
"creationDate": 1548805711.403,
"stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"
}
Etapa 6: Iniciar uma execução da máquina de estado local
Depois de criar uma máquina de estado, inicie uma execução. Você precisará referenciar o endpoint e a máquina de estado ARN ao usar o seguinte aws stepfunctions
comando:
aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --name test
Isso inicia uma execução chamada test
em sua máquina de estado HelloWorld
.
{
"startDate": 1548810641.52,
"executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test"
}
Agora que o Step Functions está sendo executado localmente, você pode interagir com ele usando o AWS CLI. Por exemplo, para obter informações sobre essa execução, use o seguinte comando:
aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test
Chamar describe-execution
para uma execução fornece detalhes mais completos, semelhante ao resultado abaixo:
{
"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": "{}"
}