Come posso configurare API Gateway con la distribuzione CloudFront?

9 minuti di lettura
0

Desidero un endpoint API ottimizzato per l'edge in Gateway Amazon API, ma ho bisogno di un maggiore controllo sulla distribuzione Amazon CloudFront. Come posso creare e utilizzare la distribuzione?

Breve descrizione

Se i client API sono distribuiti geograficamente, è bene considerare l’uso di un endpoint API ottimizzato per l'edge in API Gateway. Questo tipo di endpoint funge da endpoint regionale con una distribuzione Web CloudFront gestita da AWS per migliorare i tempi di connessione dei client.

Per utilizzare la rete globale di distribuzione di contenuti CloudFront e mantenere un maggiore controllo sulla distribuzione, è necessario utilizzare un’API regionale con una distribuzione Web CloudFront personalizzata.

Risoluzione

Crea un'API regionale in API Gateway. Quindi, procedi come segue:

Impostazione di un metodo GET per l’API

1.    Nella console API Gateway, scegli il nome della nuova API regionale.

2.    Nel riquadro Risorse, scegli Operazioni. Quindi, scegli Crea metodo. Viene visualizzato un elenco sotto il nodo / resource.

3.    Scegli GET nell'elenco. Quindi, scegli l'icona del segno di spunta.

4.    In**/- GET - Setup**, per Tipo di integrazione, scegli Fittizio. Quindi, scegli Salva.
Nota: un’ integrazione fittizia risponde a qualsiasi richiesta ricevuta, in modo da semplificare i test.

Distribuzione dell’API e identificazione del relativo URL di richiamo

1.    Distribuisci l’API in una fase.

2.    Nella parte superiore del riquadro Stage Editor, copia l'URL di richiamo negli appunti.

Esempio di URL di richiamo dell’API in API Gateway

https://restApiId.execute-api.region.amazonaws.com/stageName.

Verifica della risposta 200 OK dell’API

Per confermare che l’API restituisca una risposta 200 OK, verifica l'URL di richiamo dell'API utilizzando la console API Gateway, l'app Postman o curl.

Per verificare che l’API fornisca una risposta 200 OK utilizzando curl

In base al sistema operativo, esegui uno dei seguenti comandi:

Nota: sostituisci https://restApiId.execute-api.region.amazonaws.com/stageName con l'URL di richiamo dell’API prima di eseguire uno dei seguenti comandi.

Per Linux, usa il seguente comando:

curl -IX GET https://restApiId.execute-api.region.amazonaws.com/stageName

Per Windows PowerShell, esegui il seguente comando:

curl https://restApiId.execute-api.region.amazonaws.com/stageName

Nota: se ricevi un codice di stato diverso da una risposta200 OK, controlla la console per verificare quanto segue:
L’API viene distribuita nella tua fase.
La tua fase è specificata nell'URL di richiamo.

Creazione di una distribuzione Web CloudFront

1.    Nella console CloudFront, scegli Crea distribuzione.

2.    Nella pagina Seleziona un metodo di consegna dei contenuti, scegli Inizia, in Web.

3.    Nella pagina Crea distribuzione, incolla l’URL di richiamo dell’API in Nome dominio di origine. Quindi, elimina il nome della fase.

Esempio di nome di dominio di origine

https://1a2bc3d456.execute-api.us-east-1.amazonaws.com

4.    Inserisci in Percorso di origine il nome della fase dell’API preceduto da una barra (/stageName). Oppure, se desideri inserire personalmente il nome della fase quando richiami l'URL, non inserire alcun Percorso di origine.
Nota: se si inserisce un nome di fase errato nel Percorso di origine, quando si richiama la distribuzione CloudFront potrebbe verificarsi un errore. Ad esempio, un errore di richiesta non autorizzata che restituisce il messaggio "Missing Authentication Token" e un codice di risposta 403 Forbidden.

5.    Per Protocollo SSL di origine minimo, è consigliabile scegliere TLSv1.2. Non scegliere SSLv3. API Gateway non supporta il protocollo SSLv3.

6.    Per Policy del protocollo di origine, scegli Solo HTTPS.
Nota: API Gateway non supporta endpoint non crittografati (HTTP). Per ulteriori informazioni, consulta le Domande frequenti su Amazon API Gateway.

7.    (Facoltativo) Per inoltrare intestazioni personalizzate all’origine, inserisci una o più intestazioni personalizzate in Intestazioni personalizzate di origine.
Nota: esistono diverse intestazioni personalizzate che CloudFront non può inoltrare all'origine.

8.    Se necessario, segui le istruzioni nella sezione Se utilizzi l'autenticazione IAM per l’API o nomi di dominio personalizzati per la distribuzione.

9.    (Facoltativo) In Impostazioni di distribuzione, configura eventuali impostazioni aggiuntive che desideri personalizzare.

10.    Scegli Crea distribuzione.

11.    Attendi che la distribuzione venga distribuita. Questa operazione richiede 15-20 minuti. Quando lo Stato appare come Distribuito nella console, la distribuzione è pronta.

Per ulteriori informazioni, consulta Creazione di una distribuzione.

Verifica della distribuzione Web CloudFront

1.    Nella console CloudFront, copia il Nome di dominio della distribuzione negli appunti.

Esempio di nome di dominio non personalizzato

a222222bcdefg5.cloudfront.net.

2.    Verifica che il nome di dominio restituisca una risposta 200 OK utilizzando uno dei comandi citati in precedenza nella sezioneVerifica dell’API. Se viene visualizzato un codice di errore 500 server, la distribuzione potrebbe non essere stata completata. Se non ricevi alcuna risposta, il record DNS di CloudFront non è ancora stato propagato. In entrambi i casi, verifica che siano trascorsi 15-20 minuti dalla creazione della distribuzione. Quindi, riprova la procedura.

Importante: se hai attivato l'autenticazione AWS Identity and Access Management (IAM) nel metodo di una particolare risorsa API, quando richiami l’API devi aggiungere il nome della risorsa alla fine del nome del dominio di distribuzione. L'URL di richiamo completo (incluso il nome della risorsa) è simile a uno dei seguenti esempi. L'output dipende dal fatto che tu abbia inserito un Percorso di origine quando hai creato la distribuzione:

Esempio di URL di richiamo dell’API in API Gateway con un percorso di origine

https://distributionDomainName/stageName/resourceName

Esempio di URL di richiamo dell’API in API Gateway senza percorso di origine

https://distributionDomainName/resourceName

Per ulteriori informazioni sulle verifiche, consulta How do I activate IAM authentication for API Gateway APIs?

L’API ora utilizza la distribuzione Web che hai creato. Le risorse sono accessibili nell'URL API CloudFront.

Se utilizzi l'autenticazione IAM per l’API o nomi di dominio personalizzati per la distribuzione Web CloudFront

Per impostazione predefinita, CloudFront non inoltra le intestazioni di autorizzazione in entrata all'origine (in questo caso API Gateway). Se utilizzi l'autenticazione IAM per l’API o nomi di dominio personalizzati per la distribuzione, devi effettuare una delle seguenti operazioni:

(Per l'autenticazione IAM) Aggiungi l'intestazione Autorizzazione all'elenco delle intestazioni consentite di CloudFront

1.    Se non li hai completati in precedenza, segui i passaggi da 1 a 7 nella sezione Creazione di una distribuzione Web CloudFront di questo articolo.

2.    Nella pagina Crea distribuzione, in Impostazioni della cache e della richiesta di origine, scegli Usa una policy della cache e una policy della richiesta di origine. Quindi, in Policy della cache, scegli una policy della cache esistente oppure crea una nuova policy della cache per aggiungere l’intestazione Autorizzazione all’elenco delle intestazioni consentite di CloudFront.

3.    Se utilizzi una policy della cache esistente, in Cache basata sulle intestazioni delle richieste selezionate, scegli Whitelist. Quindi, in Intestazioni della whitelist, aggiungi Autorizzazione all'elenco delle intestazioni consentite.

Importante: se si imposta l’opzione Cache basata sulle intestazioni delle richieste selezionate su Tutte o si consente l'intestazione Host, la configurazione non funziona. Per ulteriori informazioni, consulta Memorizzazione nella cache di contenuti in base alle intestazioni di richiesta.

4.    (Facoltativo) Per verificare la configurazione, procedi come segue:
Crea la firma Signature Version 4 richiesta per l’endpoint API Gateway a livello di codice. Come valore host, inserisci l'URL di richiamo di API Gateway. Come valore endpoint , inserisci l'URL della distribuzione Web di CloudFront.

Esempio di URL di richiamo di API Gateway

<api-id>.execute.<region>.amazon.com

Esempio di URL di distribuzione Web di CloudFront

dxxxxx.cloudfront.net

Nota: se utilizzi l'app Postman, nella scheda Autorizzazione scegli AWS Signature come Tipo. Quindi, inserisci la Chiave di accesso e la Chiave segreta. Le intestazioni richieste vengono generate da Postman utilizzando le credenziali inserite.

Quindi, invia la richiesta API alla distribuzione CloudFront utilizzando l’intestazione Autorizzazione (e tutte le SignedHeaders) generata dal processo Signature Version 4.

(Per i nomi di dominio personalizzati o l’autenticazione IAM) Imposta un nome di dominio personalizzato regionale in API Gateway per accedere all’API

1.    Crea una nuova API regionale in API Gateway o converti l’API di API Gateway ottimizzata per l'edge in un'API regionale.

2.    Imposta un nome di dominio personalizzato regionale per l'API e crea una mappatura API per l’API.
Nota: usa questo nome di dominio personalizzato quando accedi all’API tramite CloudFront.

3.    Crea una distribuzione Web CloudFront seguendo le istruzioni fornite nella sezione Creazione di una distribuzione Web CloudFront di questo articolo, con un’eccezione. Al passaggio 3, inserisci in Nome dominio di origine il nome del dominio di destinazione di API Gateway, anziché l'URL di richiamo dell'API.
Nota: il nome del dominio di destinazione di API Gateway è indicato nella configurazione dell’Endpoint, nei dettagli del dominio personalizzato.

Esempio di nome di dominio di destinazione di API Gateway

d-xxxx..execute-api.<region>.amazonaws.com

4.    Nella pagina Crea distribuzione, in Impostazioni della cache e della richiesta di origine, scegli Usa una policy della cache e una policy della richiesta di origine. Quindi, in Policy della cache, scegli una policy della cache esistente oppure crea una nuova policy della cache per aggiungere le intestazioni Autorizzazione e Host all'elenco delle intestazioni consentite di CloudFront.

5.    Se utilizzi una policy della cache esistente, in Cache basata sulle intestazioni delle richieste selezionate, scegli Whitelist. Quindi, per Intestazioni della whitelist, aggiungi Autorizzazione e Host all'elenco delle intestazioni consentite.

6.    In Impostazioni di distribuzione, inserisci il nome di dominio personalizzato che hai creato in Nome di dominio alternativo.

7.    Come Certificato SSL, seleziona Certificato SSL personalizzato. Quindi, aggiungi il certificato della Gestione certificati AWS (ACM) per quel dominio.

  1. Dopo avere completato la distribuzione Web CloudFront, configura il record DNS per mappare il dominio personalizzato alla distribuzione Web CloudFront. Per eseguire questa operazione, crea un alias o un record CNAME. Per ulteriori informazioni, consulta Utilizzo di URL personalizzati aggiungendo nomi di dominio alternativi (CNAME).

9.    (Facoltativo) Per verificare la configurazione, crea una richiesta firmata Signature Version 4 per il nome di dominio personalizzato a livello di codice.
Nota: per verificare la configurazione è anche possibile utilizzare l'app Postman.


Informazioni correlate

Inizializzazione della configurazione della REST API in API Gateway

Scelta di un tipo di endpoint da configurare per un'API di API Gateway

Importazione di un'API ottimizzata per l'edge in API Gateway