Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Come posso configurare API Gateway con la distribuzione CloudFront?

8 minuti di lettura
0

Desidero un endpoint API ottimizzato per l'edge in Gateway Amazon API e creare la mia distribuzione Amazon CloudFront corrispondente.

Breve descrizione

Se i clienti API sono geograficamente separati, utilizza 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

Prerequisiti: crea una funzione AWS Lambda da integrare con la REST API di API Gateway e crea un'API regionale in API Gateway.

Crea un certificato SSL/TLS in Gestione certificati AWS (ACM) nella Regione us-east-1 e nella stessa Regione AWS della REST API di API Gateway. Per ottenere un certificato per un nome di dominio emesso da ACM o importato in ACM, completa i seguenti passaggi:

  1. Registra il dominio Internet. Puoi utilizzare Amazon Route 53 o un registrar di domini accreditato di terze parti.
  2. Crea un certificato SSL/TLS per il nome di dominio in ACM o importarne uno in ACM.

Impostazione di un metodo GET per l'API

Completa i seguenti passaggi:

  1. Apri la console API Gateway.
  2. Scegli il nome della nuova API regionale.
  3. Scegli Crea risorsa.
  4. Per Nome risorsa, inserisci Saluti.
  5. Scegli Crea metodo.
  6. Scegli GET per Tipo di metodo e seleziona Funzione Lambda per Tipo di integrazione. Quindi, attiva il pulsante Integrazione proxy Lambda e seleziona la funzione Lambda.

Distribuzione dell'API e identificazione dell'URL di richiamo API

Completa i seguenti passaggi:

  1. Distribuisci l'API in una fase.
  2. Nella parte superiore del riquadro Stage Editor, copia negli appunti l'URL di richiamo per il metodo HTTP GET della risorse Saluti.

Esempio di URL di richiamo API di API Gateway:

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

Test dell'API per ottenere una risposta 200 OK

Per verificare che l'API restituisca una risposta 200 OK, verifica l'URL di richiamo API utilizzando la console API Gateway, l'app Postman o curl. Per ulteriori informazioni su Postman e curl, consulta il sito Web di Postman e il sito Web di curl.

Utilizzo di curl per verificare che l'API restituisca una risposta 200 OK

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

Nota: sostituisci https://restApiId.execute-api.region.amazonaws.com/stageNamee/greetings con l'URL di richiamo API.

Per Linux, esegui il seguente comando:

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

Per Windows PowerShell, esegui il seguente comando:

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

Nota: se ricevi un codice di stato diverso da 200 OK, controlla la console per verificare che l'API sia stata distribuita nella fase. Inoltre, verifica che l'URL di richiamo specifichi correttamente la fase.

Creazione di una distribuzione Web CloudFront

Completa i seguenti passaggi:

  1. Apri la console CloudFront.

  2. Scegli Crea distribuzione.

  3. Per Nome dominio di origine, inserisci l'URL di richiamo API. Quindi, elimina la fase e il nome della risorsa.
    Esempio di nome di dominio di origine:

    https://restApiId.execute-api.region.amazonaws.com
  4. Per Protocollo, seleziona Solo HTTPS.
    Nota: API Gateway non supporta endpoint non crittografati (HTTP). Per ulteriori informazioni, consulta Domande frequenti su Amazon API Gateway.

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

  6. In Percorso di origine, inserisci il nome della fase dell'API preceduto da una barra (/stageName). Oppure, per inserire personalmente il nome della fase quando invochi l'URL, non inserire alcun Percorso di origine.
    Nota: se inserisci un nome di fase errato per Percorso di origine e quindi invochi la distribuzione CloudFront, si potrebbe verificare un errore. Ad esempio, si potrebbe ottenere un errore di richiesta non autorizzata che restituisce il messaggio "Missing Authentication Token" e un codice di risposta 403 Forbidden.

  7. (Facoltativo) Per inoltrare intestazioni personalizzate all'origine, inserisci una o più intestazioni personalizzate in Intestazioni personalizzate di 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 Web CloudFront.

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

  10. Scegli Crea distribuzione.

  11. Attendi 15-20 minuti per la distribuzione. Quando lo Stato della distribuzione appare come Distribuito nella console, la distribuzione è pronta.

Per ulteriori informazioni, consulta Create a distribution (Creazione di una distribuzione).

Verifica della distribuzione Web CloudFront

Completa i seguenti passaggi:

  1. Apri la console CloudFront.

  2. Copia il Nome di dominio della distribuzione negli appunti.
    Esempio di nome di dominio non personalizzato:

    a222222bcdefg5.cloudfront.net
  3. Verifica che il nome di dominio riceva una risposta 200 OK. Se viene visualizzato un codice di errore server 500, la distribuzione potrebbe non essere stata completata. Se non ricevi alcuna risposta, il record DNS di CloudFront non si è ancora propagato. In entrambi i casi, attendi 15-20 minuti dopo aver creato la distribuzione e riprova la procedura.

Importante: i passaggi precedenti riguardano le risorse API che non hanno l'autenticazione AWS Identity and Access Management (IAM) attivata per nessuno dei metodi della risorsa. Se disponi di metodi con autenticazione IAM, aggiungi il nome della risorsa alla fine del nome di dominio della distribuzione quando invochi l'API. L'URL di richiamo completo (incluso il nome della risorsa) è simile a uno dei seguenti esempi.

Esempio di URL di richiamo API in API Gateway con un percorso di origine:

https://distributionDomainName/stageName/resourceName

Esempio di URL di richiamo API in API Gateway senza percorso di origine:

https://distributionDomainName/resourceName

Per ulteriori informazioni su come eseguire il test della distribuzione, consulta Come faccio ad attivare l'autenticazione IAM per le REST API in Gateway API?

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, effettua una delle azioni riportate di seguito.

(Per l'autenticazione IAM) Aggiunta dell'intestazione di autorizzazione all'elenco delle intestazioni consentite di CloudFront

Completa i seguenti passaggi:

  1. Crea una distribuzione CloudFront.
  2. Nella pagina Crea distribuzione, per Comportamento predefinito della cache e chiave della cache e richieste origine, seleziona le impostazioni cache legacy.
  3. Scegli Includi le seguenti intestazioni nell'elenco a discesa Intestazioni. Quindi, seleziona Autorizzazione dall'elenco delle intestazioni visualizzate. Configura le intestazioni da inoltrare all'API.
    -oppure-
    Per Chiave della cache e richieste origine, in Policy cache, scegli una policy cache esistente o crea una nuova policy cache. La policy deve aggiungere l'intestazione Autorizzazione all'elenco di elementi consentiti per CloudFront.
  4. (Facoltativo) Per verificare la configurazione, procedi come segue:
    Crea la firma Signature Version 4 richiesta per l'endpoint API Gateway a livello di programmazione. 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:
    example_api_id.execute.example_region.amazon.com
    Esempio di URL di distribuzione Web di CloudFront:
    d######.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. Postman utilizza le credenziali inserite per generare le intestazioni richieste. Quindi, utilizza l'intestazione Autorizzazione (e tutte le SignedHeaders) generata dal processo Signature Version 4 per inviare la richiesta API alla distribuzione CloudFront.

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

Completa i seguenti passaggi:

  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, ma per Nome dominio di origine, inserisci il nome del dominio di destinazione di API Gateway anziché l'URL di richiamo API.
    Nota: trova il nome del dominio di destinazione di API Gateway nella sezione Configurazione dell'endpoint, nei dettagli del dominio personalizzato.
    Esempio di nome di dominio di destinazione di API Gateway:

    d-######.execute-api.example-region.amazonaws.com
  4. Nella pagina Crea distribuzione, per Comportamento predefinito della cache e chiave della cache e richieste origine, seleziona le impostazioni cache legacy.

  5. Scegli Includi le seguenti intestazioni nell'elenco a discesa Intestazioni. Quindi, seleziona Host e Autorizzazione dall'elenco delle intestazioni visualizzate. Configura le intestazioni da inoltrare all'API.
    -oppure-
    Per Chiave della cache e richieste origine, in Policy cache, scegli una policy cache esistente o crea una nuova policy cache. La policy deve aggiungere l'intestazione Autorizzazione all'elenco di elementi consentiti per CloudFront.

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

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

  8. 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 Use custom URLs by adding alternate domain names (CNAMEs) (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 programmazione.
    Nota: puoi anche utilizzare l'app Postman per testare la configurazione.