

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: creazione di una REST API privata
<a name="private-api-tutorial"></a>

In questo tutorial è possibile creare un'API REST privata. I client possono accedere all'API solo dall'interno del tuo Amazon VPC. L'API è isolata dall'internet pubblico: si tratta di un requisito di sicurezza comune.

Il completamento di questa esercitazione richiede circa 30 minuti. Innanzitutto, utilizzi un CloudFormation modello per creare un Amazon VPC, un endpoint VPC, una AWS Lambda funzione e avvia un'istanza Amazon EC2 che utilizzerai per testare la tua API. Successivamente, si utilizza Console di gestione AWS per creare un'API privata e allegare una politica delle risorse che consenta l'accesso solo dall'endpoint VPC. Infine, si esegue il dell'API. 

![\[Panoramica dell'API privata creata in questo tutorial.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/private-api-tutorial-diagram.png)


Per completare questo tutorial, sono necessari un AWS account e un AWS Identity and Access Management utente con accesso alla console. Per ulteriori informazioni, consulta [Configurazione per l'utilizzo di Gateway API](setting-up.md).

In questo tutorial utilizzerai Console di gestione AWS. Per un CloudFormation modello che crea questa API e tutte le risorse correlate, vedi [template.yaml](samples/private-api-full-template.zip).

**Topics**
+ [Fase 1: Creare dipendenze](#private-api-tutorial-create-dependencies)
+ [Fase 2: creare un'API privata](#private-api-tutorial-create-api)
+ [Fase 3: Creare un metodo e un'integrazione](#private-api-tutorial-create-method)
+ [Fase 4: Allegare una policy sulle risorse](#private-api-tutorial-attach-resource-policy)
+ [Fase 5: distribuzione dell'API](#private-api-tutorial-deploy-api)
+ [Fase 6: verificare che l'API non sia accessibile pubblicamente](#private-api-tutorial-test-private-api)
+ [Fase 7: connettersi a un'istanza nel VPC e richiamare l'API](#private-api-tutorial-connect-to-instance)
+ [Fase 8: Pulizia](#private-api-tutorial-cleanup)
+ [Passaggi successivi: automatizza con CloudFormation](#private-api-tutorial-next-steps)

## Fase 1: Creare dipendenze
<a name="private-api-tutorial-create-dependencies"></a>

[Scarica e decomprimi questo modello. CloudFormation](samples/private-api-starter-template.zip) Utilizza il modello per creare tutte le dipendenze per la tua API privata, tra cui un Amazon VPC, un endpoint VPC e una funzione Lambda utilizzata come back-end della tua API. È possibile creare l'API privata in un secondo momento.

**Per creare una pila CloudFormation**

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Scegliere **Create stack (Crea stack)**, quindi **With new resources (standard) (Con nuove risorse (standard))**.

1. In **Specificare modello**, scegliere **Carica un file modello**.

1. Selezionare il modello scaricato.

1. Scegli **Next (Successivo)**. 

1. Per **Stack name (Nome stack)**, inserire **private-api-tutorial**, quindi scegliere **Next (Avanti)**.

1. Per **Configure stack options (Configura opzioni di stack)**, scegliere **Next (Successivo)**.

1. Per quanto riguarda **le funzionalità**, riconosci che CloudFormation puoi creare risorse IAM nel tuo account.

1. Scegli **Avanti**, quindi scegli **Invia**.

CloudFormation esegue il provisioning delle dipendenze per l'API, operazione che può richiedere alcuni minuti. **Quando lo stato del tuo CloudFormation stack è **CREATE\$1COMPLETE**, scegli Outputs.** Annotare l'ID endpoint VPC. È necessario per le fasi successive di questo tutorial. 

## Fase 2: creare un'API privata
<a name="private-api-tutorial-create-api"></a>

Si crea un'API privata per consentire solo ai client all'interno del VPC di accedervi.

**Per creare un'API privata**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegli **Create API (Crea API)**, quindi per **API REST**, scegli **Build (Crea)**.

1. Per **API name (Nome API)**, immettere **private-api-tutorial**.

1. Per **Tipo di endpoint API** scegli **Privato**.

1. **Per l'**endpoint VPC IDs, inserisci** l'ID dell'endpoint VPC dagli output del tuo stack.** CloudFormation 

1. Per **Tipo di indirizzo IP**, scegli **Dualstack**.

1. Seleziona **Create API** (Crea API).

## Fase 3: Creare un metodo e un'integrazione
<a name="private-api-tutorial-create-method"></a>

Si crea un metodo `GET` e un'integrazione Lambda per gestire le richieste `GET` all'API. Quando un client chiama l'API, API Gateway invia la richiesta alla funzione Lambda creata nella fase 1 e restituisce una risposta al client.

**Per creare un metodo e un'integrazione**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere l'API.

1. Scegli **Crea metodo**.

1. Per **Tipo di metodo** seleziona `GET`.

1. Per **Tipo di integrazione** seleziona **Funzione Lambda**.

1. Attiva l'opzione **Integrazione proxy Lambda**. Con un'integrazione proxy Lambda, API Gateway invia un evento a Lambda con una struttura definita e trasforma la risposta dalla funzione Lambda in una risposta HTTP.

1. Per la **funzione Lambda**, scegli la funzione che hai creato con il CloudFormation modello nel passaggio 1. Il nome della funzione inizia con **private-api-tutorial**.

1. Scegli **Crea metodo**.

## Fase 4: Allegare una policy sulle risorse
<a name="private-api-tutorial-attach-resource-policy"></a>

Si allega una [policy delle risorse](apigateway-resource-policies.md) all'API che consente ai client di richiamare l'API solo tramite l'endpoint VPC. Per limitare ulteriormente l'accesso all'API, è inoltre possibile configurare una [policy degli endpoint VPC](apigateway-vpc-endpoint-policies.md) per l'endpoint VPC, ma per questo tutorial non è necessario.

**Per allegare una policy sulle risorse**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere l'API.

1. Scegli **Policy delle risorse**, quindi seleziona **Crea policy**.

1. Immetti la seguente policy. Sostituiscilo *vpceID* con l'ID dell'endpoint VPC dagli **output** del tuo stack. CloudFormation 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*",
               "Condition": {
                   "StringNotEquals": {
                       "aws:sourceVpce": "vpce-abcd1234"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*"
           }
       ]
   }
   ```

------

1. Scegli **Save changes** (Salva modifiche).

## Fase 5: distribuzione dell'API
<a name="private-api-tutorial-deploy-api"></a>

Successivamente, distribuisci l'API per renderla disponibile ai client nel tuo Amazon VPC.

**Per distribuire un'API**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere l'API.

1. Seleziona **Deploy API (Distribuisci API)**.

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

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

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

1. Selezionare **Deploy (Distribuisci)**.

Ora siamo pronti per testare l'API.

## Fase 6: verificare che l'API non sia accessibile pubblicamente
<a name="private-api-tutorial-test-private-api"></a>

Utilizzare `curl` per verificare che non sia possibile richiamare l'API dall'esterno dell'Amazon VPC.

**Per testare l'API**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere l'API.

1. Nel pannello di navigazione principale scegli **Fasi**, quindi seleziona la fase **test**.

1. In **Dettagli fase**, scegli l'icona Copia per copiare l'URL di richiamo dell'API. L'URL è simile a `https://abcdef123.execute-api.us-west-2.amazonaws.com/test`. L'endpoint VPC creato nella fase 1 ha il DNS privato abilitato, quindi è possibile utilizzare l'URL fornito per richiamare l'API.

1. Usa curl per tentare di richiamare l'API dall'esterno del VPC.

   ```
   curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

   Curl indica che l'endpoint dell'API non può essere risolto. Se ricevi una risposta diversa, torna alla fase 2 e assicurati di scegliere **Private (Privato)** per il tipo di endpoint dell'API.

   ```
   curl: (6) Could not resolve host: abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

Successivamente, connettiti a un'istanza Amazon EC2 nel VPC per richiamare l'API.

## Fase 7: connettersi a un'istanza nel VPC e richiamare l'API
<a name="private-api-tutorial-connect-to-instance"></a>

Successivamente, testa l'API dall'interno del VPC Amazon. Per accedere alla tua API privata, connettiti a un'istanza Amazon EC2 nel tuo VPC e poi usa curl per richiamare l'API. Per connettersi all'istanza nel browser, si utilizza Systems Manager Session Manger.

**Per testare l'API**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Instances (Istanze)**.

1. Scegli l'istanza denominata **private-api-tutorial**che hai creato con il CloudFormation modello nel passaggio 1.

1. Scegliere **Connect (Connetti)**, quindi **Session Manager (Gestore di sessione)**.

1. Scegliere **Connect** per avviare una sessione basata su browser nell'istanza.

1. Nella sessione di Session Manager, usa curl per richiamare l'API. Puoi richiamare l'API perché stai utilizzando un'istanza nel tuo Amazon VPC.

   ```
   curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test
   ```

   Verificare di ottenere la risposta `Hello from Lambda!`.

![\[Utilizza Session Manager per richiamare l'API dall'interno del tuo VPC Amazon.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/private-api-tutorial-invoke.png)


Hai creato un'API accessibile solo dall'interno del tuo VPC Amazon e hai verificato che funzioni.

## Fase 8: Pulizia
<a name="private-api-tutorial-cleanup"></a>

Per evitare costi non necessari, eliminare le risorse create nell'ambito di questo tutorial. I seguenti passaggi eliminano l'API REST e lo CloudFormation stack.

**Per eliminare un'API REST**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Nella **APIs**pagina, seleziona un'API. Scegli **Azioni API**, seleziona **Elimina** e quindi conferma la scelta.

**Per eliminare una CloudFormation pila**

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Seleziona il tuo stack. CloudFormation 

1. Scegli **Elimina** e conferma la tua scelta.

## Passaggi successivi: automatizza con CloudFormation
<a name="private-api-tutorial-next-steps"></a>

Puoi automatizzare la creazione e la pulizia di tutte le AWS risorse coinvolte in questo tutorial. Per un modello CloudFormation di esempio completo, consulta [template.yaml](samples/private-api-full-template.zip).