Tutorial: creazione di una REST API privata
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, si usa un modello AWS CloudFormation per creare un Amazon VPC, un endpoint VPC e una funzione AWS Lambda e per avviare un'istanza Amazon EC2 da usare per testare l'API. Successivamente, utilizzare la AWS Management Console per creare un'API privata e collegare una policy delle risorse che consenta l'accesso solo dall'endpoint VPC. Infine, si esegue il dell'API.

Per completare questo tutorial, sono necessari un account AWS e un utente AWS Identity and Access Management con accesso alla console. Per ulteriori informazioni, consulta Configurazione per l'utilizzo di Gateway API.
In questo tutorial utilizzerai AWS Management Console. Per un modello AWS CloudFormation che crea questa API e tutte le risorse correlate, consulta template.yaml.
Argomenti
- Fase 1: Creare dipendenze
- Fase 2: creare un'API privata
- Fase 3: Creare un metodo e un'integrazione
- Fase 4: Allegare una policy sulle risorse
- Fase 5: distribuzione dell'API
- Fase 6: verificare che l'API non sia accessibile pubblicamente
- Fase 7: connettersi a un'istanza nel VPC e richiamare l'API
- Fase 8: Pulizia
- Fasi successive: Automatizzare con AWS CloudFormation
Fase 1: Creare dipendenze
Scarica e decomprimi questo modello AWS CloudFormation. 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.
Creazione di uno stack AWS CloudFormation
Apri la console di AWS CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Scegliere Create stack (Crea stack), quindi With new resources (standard) (Con nuove risorse (standard)).
-
In Specificare modello, scegliere Carica un file modello.
-
Selezionare il modello scaricato.
-
Seleziona Next (Successivo).
-
Per Stack name (Nome stack), inserire
private-api-tutorial
, quindi scegliere Next (Avanti). -
Per Configure stack options (Configura opzioni di stack), scegliere Next (Successivo).
-
Per Capabilities (Funzionalità), conferma che AWS CloudFormation può creare risorse IAM nel tuo account.
-
Scegli Invia.
AWS CloudFormation effettua il provisioning delle dipendenze per la tua API: ciò può richiedere alcuni minuti. Quando lo stato dello stack AWS CloudFormation è CREATE_COMPLETE, scegli Outputs (Output). Annotare l'ID endpoint VPC. È necessario per le fasi successive di questo tutorial.
Fase 2: creare un'API privata
Si crea un'API privata per consentire solo ai client all'interno del VPC di accedervi.
Per creare un'API privata
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegli Create API (Crea API), quindi per API REST, scegli Build (Crea).
-
Per API name (Nome API), immettere
private-api-tutorial
. -
Per Tipo di endpoint API scegli Privato.
-
Per ID endpoint VPC immetti l'ID dell'endpoint VPC dagli Output dello stack AWS CloudFormation.
-
Seleziona Create API (Crea API).
Fase 3: Creare un metodo e un'integrazione
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
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegliere l'API.
-
Scegli Crea metodo.
-
Per Tipo di metodo seleziona
GET
. -
Per Tipo di integrazione seleziona Funzione Lambda.
-
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.
-
Per la funzione Lambda, scegliere la funzione creata con il modello AWS CloudFormation nella fase 1. Il nome della funzione inizia con
private-api-tutorial
. -
Scegli Crea metodo.
Fase 4: Allegare una policy sulle risorse
Si allega una policy delle risorse 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 per l'endpoint VPC, ma per questo tutorial non è necessario.
Per allegare una policy sulle risorse
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegliere l'API.
-
Scegli Policy delle risorse, quindi seleziona Crea policy.
-
Immetti la seguente policy. Sostituisci
VpceID
con l'ID dell'endpoint VPC da Outputs (Output) dello stack AWS CloudFormation.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "
vpceID
" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" } ] } -
Scegli Save changes (Salva modifiche).
Fase 5: distribuzione dell'API
Successivamente, distribuisci l'API per renderla disponibile ai client nel tuo Amazon VPC.
Per distribuire un'API
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegliere l'API.
Seleziona Deploy API (Distribuisci API).
In Fase, seleziona Nuova fase.
In Stage name (Nome fase) immettere
test
.(Facoltativo) In Description (Descrizione), immettere una descrizione.
Selezionare Deploy (Distribuisci).
Ora siamo pronti per testare l'API.
Fase 6: verificare che l'API non sia accessibile pubblicamente
Utilizzare curl
per verificare che non sia possibile richiamare l'API dall'esterno dell'Amazon VPC.
Per testare l'API
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegliere l'API.
-
Nel pannello di navigazione principale scegli Fasi, quindi seleziona la fase test.
-
In Dettagli fase, scegli l'icona Copia per copiare l'URL di richiamo dell'API. L'URL è simile a
https://
. L'endpoint VPC creato nella fase 1 ha il DNS privato abilitato, quindi è possibile utilizzare l'URL fornito per richiamare l'API.abcdef123
.execute-api.us-west-2
.amazonaws.com/test -
Usa curl per tentare di richiamare l'API dall'esterno del VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testCurl 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
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
Aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/
. -
Seleziona Instances (Istanze).
-
Scegliere l'istanza denominata private-api-tutorial creata con il modello AWS CloudFormation nella fase 1.
-
Scegliere Connect (Connetti), quindi Session Manager (Gestore di sessione).
-
Scegliere Connect per avviare una sessione basata su browser nell'istanza.
-
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/testVerificare di ottenere la risposta
Hello from Lambda!
.

Hai creato un'API accessibile solo dall'interno del tuo VPC Amazon e hai verificato che funzioni.
Fase 8: Pulizia
Per evitare costi non necessari, eliminare le risorse create nell'ambito di questo tutorial. I seguenti passaggi eliminano l'API REST e lo stack AWS CloudFormation.
Per eliminare un'API REST
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Nella pagina API, selezionare un'API. Scegli Azioni API, seleziona Elimina e quindi conferma la scelta.
Per eliminare uno stack AWS CloudFormation
Apri la console di AWS CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation
. -
Seleziona lo stack AWS CloudFormation.
-
Scegli Elimina e conferma la tua scelta.
Fasi successive: Automatizzare con AWS CloudFormation
È possibile automatizzare la creazione e la pulizia di tutte le risorse AWS coinvolte in questo tutorial. Per un modello AWS CloudFormation di esempio completo, consulta template.yaml.