

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à.

# Creare una macchina a stati Step Functions utilizzando AWS SAM
<a name="tutorial-state-machine-using-sam"></a>

In questa guida, si scarica, si crea e si distribuisce un' AWS SAM applicazione di esempio che contiene una macchina a AWS Step Functions stati. Questa applicazione crea un flusso di lavoro di trading di azioni finte che viene eseguito in base a una pianificazione predefinita (si noti che il programma è disabilitato per impostazione predefinita per evitare addebiti).

Il diagramma seguente mostra i componenti di questa applicazione:

![\[Diagramma che mostra il flusso di lavoro per questo tutorial.\]](http://docs.aws.amazon.com/it_it/step-functions/latest/dg/images/sam-starter-template-docs.png)


Di seguito è riportata un'anteprima dei comandi eseguiti per creare l'applicazione di esempio. Per ulteriori dettagli su ciascuno di questi comandi, vedere le sezioni più avanti in questa pagina

```
# Step 1 - Download a sample application. For this tutorial you
#   will follow the prompts to select an AWS Quick Start Template
#   called 'Multi-step workflow'
sam init

# Step 2 - Build your application
cd project-directory
sam build

# Step 3 - Deploy your application
sam deploy --guided
```

## Prerequisiti
<a name="tutorial-state-machine-using-sam-prerequisites"></a>

Questa guida presuppone che tu abbia completato i passaggi descritti nell'[Installazione della AWS SAM CLI per il](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) tuo sistema operativo. Si presuppone che tu abbia fatto quanto segue:

1. Hai creato un account AWS .

1. Autorizzazioni IAM configurate.

1. Installato Homebrew. Nota: Homebrew è solo un prerequisito per Linux e macOS.

1. Installata la AWS SAM CLI. Nota: assicurarsi di avere la versione 0.52.0 o successiva. È possibile verificare quale versione si dispone eseguendo il comando `sam --version`.

## Passaggio 1: scarica un'applicazione di esempio AWS SAM
<a name="tutorial-state-machine-using-sam-initialize"></a>

**Comando da eseguire:**

```
sam init
```

Seguire le istruzioni visualizzate sullo schermo per selezionare quanto segue:

1. **Modello:** modelli di avvio AWS rapido

1. **Lingua:** Python, Ruby, NodeJS, Go, Java o .NET

1. **Nome progetto:** (nome a tua scelta - predefinito è `sam-app`)

1. **Applicazione Quick Start: flusso** di lavoro in più fasi

**Cosa AWS SAM sta facendo:**

Questo comando crea una directory con il nome fornito per il prompt 'Nome progetto' (il valore predefinito è `sam-app`). Il contenuto specifico della directory dipenderà dalla lingua scelta.

Di seguito sono riportati i contenuti della directory quando si sceglie uno dei runtime Python:

```
├── README.md
├── functions
│   ├── __init__.py
│   ├── stock_buyer
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   ├── stock_checker
│   │   ├── __init__.py
│   │   ├── app.py
│   │   └── requirements.txt
│   └── stock_seller
│       ├── __init__.py
│       ├── app.py
│       └── requirements.txt
├── statemachine
│   └── stock_trader.asl.json
├── template.yaml
└── tests
    └── unit
        ├── __init__.py
        ├── test_buyer.py
        ├── test_checker.py
        └── test_seller.py
```

Ci sono due file particolarmente interessanti a cui puoi dare un'occhiata:
+ `template.yaml`: contiene il AWS SAM modello che definisce le AWS risorse dell'applicazione.
+ `statemachine/stockTrader.asl.json`: contiene la definizione della macchina a stati dell'applicazione, scritta in [Utilizzo di Amazon States Language per definire i flussi di lavoro Step Functions](concepts-amazon-states-language.md).

È possibile visualizzare la seguente voce nel file `template.yaml`, che punta al file di definizione della macchina a stati:



```
    Properties:
      DefinitionUri: statemachine/stock_trader.asl.json
```

Può essere utile conservare la definizione della macchina a stati come file separato anziché incorporarla nel AWS SAM modello. Ad esempio, tenere traccia delle modifiche alla definizione della macchina a stati è più semplice se non si include la definizione nel modello. Puoi utilizzare Workflow Studio per creare e gestire la definizione della macchina a stati ed esportare la definizione dalla console direttamente nel file delle specifiche di Amazon States Language senza unirla al modello.

Per ulteriori informazioni sull'applicazione di esempio, vedere il file `README.md` nella directory del progetto.

## Passaggio 2: crea la tua applicazione
<a name="tutorial-state-machine-using-sam-build"></a>

**Comando da eseguire:**

Per prima cosa passare alla directory del progetto (ovvero alla directory in cui si trova il file `template.yaml` per l'applicazione di esempio; per impostazione predefinita è `sam-app`), quindi eseguire questo comando:

```
sam build
```

**Output di esempio:**

```
  
 Build Succeeded

 Built Artifacts  : .aws-sam/build
 Built Template   : .aws-sam/build/template.yaml

 Commands you can use next
 =========================
 [*] Invoke Function: sam local invoke
 [*] Deploy: sam deploy --guided
```

**Cosa AWS SAM sta facendo:**

La AWS SAM CLI include astrazioni per una serie di runtime Lambda per creare le dipendenze e copia tutti gli elementi di compilazione in cartelle di staging in modo che tutto sia pronto per essere impacchettato e distribuito. Il comando `sam build` crea tutte le dipendenze dell'applicazione e copia gli artifact di compilazione nelle cartelle in `.aws-sam/build`.

## Fase 3 AWS : Implementa la tua applicazione nel cloud
<a name="tutorial-state-machine-using-sam-deploy"></a>

**Comando da eseguire:**

```
sam deploy --guided
```

Seguire le istruzioni visualizzate sullo schermo. È sufficiente rispondere con `Enter` per accettare le opzioni predefinite fornite nell'esperienza interattiva.

**Cosa AWS SAM sta facendo:**

Questo comando distribuisce l'applicazione nel AWS cloud. Prende gli elementi di distribuzione creati con il `sam build` comando, li impacchetta e li carica in un bucket Amazon S3 creato dalla AWS SAM CLI e distribuisce l'applicazione utilizzando. CloudFormation Nell'output del comando di distribuzione puoi vedere le modifiche apportate allo stack CloudFormation .

È possibile verificare che la macchina a stati Step Functions di esempio sia stata distribuita correttamente seguendo questi passaggi:

1. Accedi Console di gestione AWS e apri la console Step Functions all'indirizzo [https://console.aws.amazon.com/states/](https://console.aws.amazon.com/states/).

1. Nella navigazione a sinistra, scegliere **Macchine a stati**.

1. Individuare e scegliere la nuova macchina a stati nell'elenco. Si chiamerà StockTradingStateMachine -*<unique-hash>*.

1. Scegliere la scheda **Definizione** .

A questo punto dovrebbe essere visualizzata una rappresentazione visiva della macchina a stati. È possibile verificare che la rappresentazione visiva corrisponda alla definizione della macchina a stati trovata nel file `statemachine/stockTrader.asl.json` della directory del progetto.

## Risoluzione dei problemi
<a name="tutorial-state-machine-using-sam-troubleshooting"></a>

### Errore CLI SAM: “no such option: --guided"
<a name="tutorial-state-machine-using-sam-troubleshooting-guided"></a>

Durante l'esecuzione di `sam deploy`, viene visualizzato il seguente errore:

```
 
Error: no such option: --guided
```

Ciò significa che stai utilizzando una versione precedente della AWS SAM CLI che non supporta il `--guided` parametro. Per risolvere questo problema, puoi aggiornare la tua versione di AWS SAM CLI alla versione 0.33.0 o successiva oppure omettere il `--guided` parametro dal comando. `sam deploy`

### Errore CLI SAM: “Failed to create managed resources: Unable to locate credentials”
<a name="tutorial-state-machine-using-sam-troubleshooting-credentials"></a>

Durante l'esecuzione di `sam deploy`, viene visualizzato il seguente errore:

```
 
Error: Failed to create managed resources: Unable to locate credentials
```

Ciò significa che non sono state configurate AWS le credenziali per consentire alla AWS SAM CLI di AWS effettuare chiamate di servizio. Per risolvere questo problema, è necessario impostare AWS le credenziali. Per ulteriori informazioni, consulta [Configurazione delle AWS credenziali nella Guida](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started-set-up-credentials.html) per gli *AWS Serverless Application Model sviluppatori*.

## Pulizia
<a name="tutorial-state-machine-using-sam-cleanup"></a>

Se non hai più bisogno delle AWS risorse che hai creato eseguendo questo tutorial, puoi rimuoverle eliminando lo CloudFormation stack che hai distribuito.

Per eliminare lo CloudFormation stack creato con questo tutorial utilizzando il Console di gestione AWS, segui questi passaggi:

1. Accedi Console di gestione AWS e apri la CloudFormation console all'indirizzo [https://console.aws.amazon.com/cloudformazione.](https://console.aws.amazon.com/cloudformation/)

1. Nel riquadro di navigazione a sinistra, selezionare **Stacks (Stack)**.

1. Nell'elenco degli stack, scegliere **sam-app** (o il nome dello stack creato).

1. Scegli **Elimina**.

Al termine, lo stato dello stack cambierà in **DELETE\$1COMPLETE**.

In alternativa, puoi eliminare lo CloudFormation stack eseguendo il seguente comando: AWS CLI 

```
aws cloudformation delete-stack --stack-name sam-app --region region
```

### Verifica dello stack eliminato
<a name="tutorial-state-machine-using-sam-cleanup-verify"></a>

Per entrambi i metodi di eliminazione dello CloudFormation stack, puoi verificare che sia stato eliminato accedendo a [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/), scegliendo **Stacks** nel riquadro di navigazione a sinistra e scegliendo **Eliminato** nel menu a discesa a destra della casella di testo di ricerca. Dovresti vedere il nome dello stack **sam-app** (o il nome dello stack creato) nell'elenco degli stack eliminati.