

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

# Creazione di un'API Step Functions utilizzando API Gateway
<a name="tutorial-api-gateway"></a>

Puoi utilizzare Amazon API Gateway per AWS Step Functions APIs associare i tuoi metodi a un'API API Gateway. Quando una richiesta HTTPS viene inviata a un metodo API, API Gateway richiama le tue azioni API Step Functions.

Questo tutorial descrive come creare un'API che utilizza una risorsa e il metodo `POST` per comunicare con l'operazione API `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)`. Utilizzerai la console AWS Identity and Access Management (IAM) per creare un ruolo per API Gateway. Quindi, utilizzerai la console API Gateway per creare un'API API Gateway, creare una risorsa e un metodo e mappare il metodo all'azione `StartExecution` API. Infine, distribuirai e testerai le tue API.

**Nota**  
Sebbene Amazon API Gateway possa avviare un'esecuzione di Step Functions chiamando`StartExecution`, è necessario `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)` chiamare per ottenere il risultato.

## Fase 1: creazione di un ruolo IAM per API Gateway
<a name="api-gateway-step-1"></a>

Prima di creare l'API API Gateway, devi autorizzare API Gateway a richiamare le azioni API di Step Functions.<a name="api-gateway-procedure-create-iam-role"></a>

**Per configurare le autorizzazioni per API Gateway**

1. Accedi alla [console IAM](https://console.aws.amazon.com/iam/home) e scegli **Ruoli**, **Crea ruolo**.

1. Nella pagina **Seleziona un’entità attendibile**, esegui le operazioni seguenti:

   1. Per il **tipo di entità affidabile**, mantieni la selezione predefinita di **Servizio AWS**.

   1. Per **Use case**, scegli **API Gateway** dall'elenco a discesa.

1. Seleziona **API Gateway**, quindi scegli **Avanti**.

1. Nella pagina **Add permissions** (Aggiungi autorizzazioni), scegli **Next** (Successivo).

1. (Facoltativo) Nella pagina **Nome, revisione e creazione**, inserisci i dettagli, ad esempio il nome del ruolo. Ad esempio, specifica **APIGatewayToStepFunctions**.

1. Scegli **Crea ruolo**.

   Il ruolo IAM viene visualizzato nell'elenco dei ruoli.

1. Scegliere il nome del ruolo e prendere nota dell'**ARN del ruolo**, come illustrato nell'esempio seguente.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```<a name="api-gateway-attach-policy-to-role"></a>

**Per allegare una policy al ruolo IAM**

1. Nella pagina **Roles (Ruoli)** cerca il ruolo (`APIGatewayToStepFunctions`) e quindi selezionalo.

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni**, quindi scegli **Allega** politiche.

1. Nella pagina **Allega policy**, cerca`AWSStepFunctionsFullAccess`, scegli la policy, quindi scegli **Aggiungi** autorizzazioni.

## Fase 2: Crea la tua API API Gateway
<a name="api-gateway-step-2"></a>

Dopo aver creato il tuo ruolo IAM, puoi creare la tua API API Gateway personalizzata.

**Per creare l'API**

1. Apri la [console Amazon API Gateway](https://console.aws.amazon.com/apigateway/), quindi scegli **Crea API**.

1. Nella pagina **Scegli un tipo di API**, nel riquadro **API REST**, scegli **Build**.

1. Nella pagina **Crea API REST**, seleziona **Nuova API**, quindi inserisci ***StartExecutionAPI*** il **nome dell'API**.

1. Mantieni il **tipo di endpoint dell'API** su **Regionale**, quindi scegli **Crea API**.<a name="api-gateway-create-resource"></a>

**Come creare una risorsa**

1. Nella pagina **Risorse** di***StartExecutionAPI***, scegli **Crea risorsa**.

1. Nella pagina **Crea risorsa**, inserisci **execution** il **nome della risorsa**, quindi scegli **Crea risorsa**.<a name="api-gateway-create-method"></a>

**Per creare un metodo POST**

1. Scegli la risorsa **/execution**, quindi scegli il **metodo Create.**

1. Per **Tipo di metodo**, scegliete`POST`.

1. Per **Tipo di integrazione** scegli **Servizio AWS**.

1. Per **Regione AWS**, scegli una regione dall'elenco.

1. Per **Servizio AWS**, scegli **Step Functions** dall'elenco.

1. Lascia vuoto **Sottodominio AWS**.

1. Per il **metodo HTTP**, scegli **POST** dall'elenco.
**Nota**  
Tutte le azioni dell'API Step Functions utilizzano il `POST` metodo HTTP.

1. Per **Tipo di operazione** scegli **Usa nome operazione**.

1. Per **Nome azione** immetti **StartExecution**.

1. Per il **ruolo Execution**, inserisci [il ruolo ARN del ruolo IAM che hai creato in precedenza](#api-gateway-procedure-create-iam-role), come mostrato nell'esempio seguente.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```

1. **Mantieni le opzioni predefinite per **Credential cache** e **Default timeout**, quindi scegli Salva.**

La mappatura visiva tra API Gateway e Step Functions viene visualizzata nella pagina **/execution - POST - Method execution**.

## Fase 3: Test e implementazione dell'API API Gateway
<a name="api-gateway-step-3"></a>

Una volta creata l'API, eseguirne i test e la distribuzione. <a name="api-gateway-test-api"></a>

**Per testare la comunicazione tra API Gateway e Step Functions**

1. Nella pagina **/execution - POST - Method Execution**, scegli la scheda **Test**. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

1. **Nella scheda **/execution - POST - Method Test**, copia i seguenti parametri di richiesta nella sezione **Request body** utilizzando l'ARN di una macchina a stati esistente ([o crea una nuova macchina a stati che utilizza una funzione Lambda](tutorial-creating-lambda-state-machine.md)), quindi scegli Test.**

   ```
   {
      "input": "{}",
      "name": "MyExecution",
      "stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"
   }
   ```

   *Per ulteriori informazioni, consulta la [sintassi della `StartExecution` richiesta](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html#API_StartExecution_RequestSyntax) nell'API Reference. AWS Step Functions*
**Nota**  
Se non desideri includere l'ARN della tua macchina a stati nel corpo della chiamata API Gateway, puoi configurare un modello di mappatura nella scheda **Richiesta di integrazione**, come mostrato nell'esempio seguente.  

   ```
   {
       "input": "$util.escapeJavaScript($input.json('$'))",
       "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)"
   }
   ```
Con questo approccio, è possibile specificare ARNs diverse macchine a stati in base alla fase di sviluppo (ad esempio `dev``test`, e`prod`). Per ulteriori informazioni sulla specificazione delle variabili di fase in un modello di mappatura, consulta [https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference)la Guida per *sviluppatori di API Gateway*.

1. **L'esecuzione viene avviata e l'ARN di esecuzione e la relativa data di epoca vengono visualizzati nel corpo della risposta.**

   ```
   {
      "executionArn": "arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution",
      "startDate": 1486768956.878
   }
   ```
**Nota**  
È possibile visualizzare l'esecuzione scegliendo la macchina a stati nella [console AWS Step Functions](https://console.aws.amazon.com/states/).

**Per distribuire l'API**

1. Nella pagina **Risorse** di***StartExecutionAPI***, scegli **Deploy** API.

1. In **Fase**, seleziona **Nuova fase**.

1. In **Stage name (Nome fase)** immettere **alpha**.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. Seleziona **Implementa**.

**Per testare la distribuzione**

1. Nella pagina **Stages** di***StartExecutionAPI***, espandi **alpha**,**/**, **/execution**, **POST**, quindi scegli il metodo **POST**.

1. In **Method overrides**, scegli l'icona di copia per copiare l'URL di richiamo dell'API. L'URL completo dovrebbe essere simile all'esempio seguente.

   ```
   https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

1. Dalla riga di comando, eseguire il comando `curl` utilizzando l'ARN della macchina a stati, quindi richiamare l'URL della distribuzione, come indicato nell'esempio seguente.

   ```
   curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

   Vengono restituiti l'ARN di esecuzione e la relativa data epoca (Unix epoch), come indicato nell'esempio seguente.

   ```
   {"executionArn":"arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
   ```
**Nota**  
Se ricevi l'errore «Token di autenticazione mancante», assicurati che l'URL di invoke termini con **/esecuzione.**