Tutorial: Testando fluxos de trabalho usando Step Functions e AWS SAM CLILocal - AWS Step Functions

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.

  1. Instale o AWS SAM CLI.

    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.

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