

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 CLI Local
<a name="sfn-local-lambda"></a>

**Step Functions Local non è supportato**  
Step Functions Local **non** fornisce parità di funzionalità e **non** è supportato.  
Potresti prendere in considerazione soluzioni di terze parti che emulano Step Functions a scopo di test.  
In alternativa a Step Functions Local, puoi utilizzare l' TestState API per testare unitariamente la logica della tua macchina a stati prima di distribuirla AWS sul tuo account. Per ulteriori informazioni, consulta [Testare le macchine a stati con l' TestState API](https://docs.aws.amazon.com/step-functions/latest/dg/test-state-isolation.html).

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:
+ [Test di macchine a stati con Step Functions Local (non supportato)](sfn-local.md)
+ [Configurare AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html)

## Fase 1: Configurazione AWS SAM
<a name="install-sam"></a>

AWS Serverless Application Model (AWS SAM) CLI Local richiede l'installazione di AWS Command Line Interface AWS SAM, e Docker. 

1. [Installa la AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html).
**Nota**  
Prima di installare la AWS SAM CLI, è necessario installare AWS CLI e Docker. Vedi i [prerequisiti](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) per l'installazione della AWS SAM CLI.

1. Vai alla documentazione [Quick Start AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html). Assicurati di seguire i passaggi per:

   1. [Inizializzare l'applicazione](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-setup-local-app)

   1.  [Testare l'applicazione in locale](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-quick-start.html#gs-ex1-test-locally) 

   

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

   

## Fase 2: Test della AWS SAM CLI locale
<a name="test-local-lambda"></a>

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

```
sam local start-api
```

Questo avvia un'istanza locale della 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 l'API Lambda.

## Fase 3: Avvia AWS SAM CLI Local
<a name="start-local-lambda"></a>

Ora che hai verificato che la funzione funzioni, avvia AWS SAM CLI Local. Nella directory `sam-app`, immettere il seguente comando:

```
sam local start-lambda
```

Questo avvia AWS SAM CLI Local 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
<a name="start-stepfunctions-local"></a>

### File JAR
<a name="start-local-jar"></a>

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 {{account-id}}, region us-east-1
```

### Docker
<a name="start-local-docker"></a>

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, vedere[Configurazione locale di Step Functions (versione scaricabile) in Docker](sfn-local.md#sfn-local-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](sfn-local.md#sfn-local-config-options).

## Passaggio 5: creare una macchina a stati che faccia riferimento alla funzione AWS SAM locale della CLI
<a name="create-local-statemachine"></a>

Dopo l'esecuzione di Step Functions Local, crea una macchina a stati che faccia riferimento a `HelloWorldFunction` quella in [Fase 1: Configurazione AWS SAM](#install-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:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}:stateMachine:HelloWorld"
}
```

## Fase 6: avviare un'esecuzione della macchina a stati locale.
<a name="run-local-statemachine"></a>

Dopo aver creato una macchina a stati, avvia un'esecuzione. È necessario fare riferimento all'ARN dell'endpoint e della macchina a stati quando si utilizza il **aws stepfunctions** comando seguente:

```
aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld --name test
```

Questo avvia un'esecuzione denominata `test` della tua macchina a `HelloWorld` stati.

```
{
    "startDate": 1548810641.52, 
    "executionArn": "arn:aws:states:{{region}}:{{account-id}}: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, utilizzate il seguente comando:

```
aws stepfunctions --endpoint http://localhost:8083 describe-execution --execution-arn arn:aws:states:{{region}}:{{account-id}}: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:{{region}}:{{account-id}}:execution:HelloWorld:test", 
    "stateMachineArn": "arn:aws:states:{{region}}:{{account-id}}:stateMachine:HelloWorld", 
    "stopDate": 1549056351.276, 
    "output": "{\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\", \\\"location\\\": \\\"72.21.198.64\\\"}\"}", 
    "input": "{}"
}
```