Tutorial: Test dei flussi di lavoro utilizzando Step Functions e AWS SAM CLILocale - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Test dei flussi di lavoro utilizzando Step Functions e AWS SAM CLILocale

Con entrambi AWS Step Functions e AWS Lambda in esecuzione sul computer locale, puoi testare la tua macchina a stati e le funzioni Lambda senza distribuire il codice su AWS.

Per ulteriori informazioni, consulta i seguenti argomenti:

Fase 1: Configurazione AWS SAM

AWS Serverless Application Model (AWS SAM) CLI Local richiede AWS Command Line Interface, AWS SAM e Docker da installare.

  1. Installa il AWS SAM CLI.

    Nota

    Prima di installare il AWS SAM CLI, è necessario installare il AWS CLI e Docker. Vedi i prerequisiti per l'installazione di AWS SAM CLI.

  2. Passa attraverso il AWS SAMDocumentazione Quick Start. Assicurati di seguire i passaggi per:

    Questo crea una sam-app directory e crea un ambiente che include una funzione Hello World Lambda basata su Python.

Fase 2: Test AWS SAM CLILocale

Ora che hai installato AWS SAM e ha creato la funzione Hello World Lambda, puoi testare la funzione. Nella directory sam-app, immettere il seguente comando:

sam local start-api

Questo avvia un'istanza locale della tua funzione Lambda. Verrà visualizzato un output simile al seguente:

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)

Apri un browser e inserisci quanto segue:

http://127.0.0.1:3000/hello

Questo produrrà una risposta simile alla seguente:

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

Inserisci CTRL+C per terminare la LambdaAPI.

Fase 3: Inizia AWS SAM CLILocale

Ora che hai verificato che la funzione funzioni, inizia AWS SAM CLILocale. Nella directory sam-app, immettere il seguente comando:

sam local start-lambda

Questo inizia AWS SAM CLILocale e fornisce l'endpoint da utilizzare, in modo simile al seguente output:

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)

Fase 4: Avvia Step Functions Local

JARFile

Se utilizzi la versione del .jar file di Step Functions Local, avvia Step Functions e specifica l'endpoint Lambda. Nella directory in cui hai estratto .jar i file, inserisci il seguente comando:

java -jar StepFunctionsLocal.jar --lambda-endpoint http://localhost:3001

All'avvio di Step Functions Local, controlla l'ambiente e quindi le credenziali configurate nel ~/.aws/credentials file. Per impostazione predefinita, inizia a utilizzare un ID utente fittizio ed è elencato come. 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 utilizzi la versione Docker di Step Functions Local, avvia Step Functions con il seguente comando:

docker run -p 8083:8083 amazon/aws-stepfunctions-local

Per informazioni sull'installazione della versione Docker di Step Functions, vedereConfigurazione locale di Step Functions (versione scaricabile) in Docker.

Nota

È possibile specificare l'endpoint tramite la riga di comando o impostando le variabili di ambiente se si avvia Step Functions dal .jar file. Per la versione Docker, è necessario specificare gli endpoint e le credenziali in un file di testo. Per informazioni, consulta Impostazione delle opzioni di configurazione per Step Functions Local.

Passaggio 5: crea una macchina a stati che faccia riferimento alla tua AWS SAM CLIFunzione locale

Dopo l'esecuzione di Step Functions Local, crea una macchina a stati che faccia riferimento a HelloWorldFunction quella in Fase 1: Configurazione AWS SAM cui hai inizializzato.

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"

Questo creerà una macchina a stati e fornirà un Amazon Resource Name (ARN) che puoi usare per avviare un'esecuzione.

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

Fase 6: avviare un'esecuzione della macchina a stati locale.

Dopo aver creato una macchina a stati, avvia un'esecuzione. Dovrai fare riferimento all'endpoint e alla macchina a stati ARN quando usi il seguente aws stepfunctions comando:

aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld --name test

Ciò avvia un'esecuzione test denominata macchina a HelloWorld stati.

{ "startDate": 1548810641.52, "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test" }

Ora che Step Functions è in esecuzione localmente, puoi interagire con esso utilizzando il AWS CLI. Ad esempio, per ottenere informazioni su questa esecuzione, utilizzare il seguente comando:

aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:us-east-1:123456789012:execution:HelloWorld:test

La describe-execution richiesta di esecuzione fornisce dettagli più completi, simili al seguente risultato:

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