Come faccio a connettermi a un Gateway API privato tramite una connessione Direct Connect?

5 minuti di lettura
0

Desidero connettermi a un Gateway Amazon API privato tramite una connessione AWS Direct Connect.

Soluzione

Crea un endpoint Amazon Virtual Private Cloud (Amazon VPC) per il servizio Gateway Amazon API

Un endpoint Amazon VPC consente alle risorse private in un VPC di comunicare in modo sicuro con il servizio Gateway API. Per creare un endpoint Amazon VPC per Gateway API, segui questi passaggi:

  1. Apri la console Amazon VPC.
  2. Nel pannello di navigazione, in Cloud privato virtuale, scegli Endpoint.
  3. In Categoria servizio, scegli Servizi AWS.
  4. In Nome servizio, cerca per parola chiave "execute-api". Questa ricerca restituisce un unico risultato: "com.amazonaws.REGION.execute-api".
  5. Seleziona "com.amazonaws.REGION.execute-api".
  6. In VPC, scegli l’Amazon VPC in cui è configurata la connessione Direct Connect.
  7. In Sottoreti, seleziona le sottoreti in cui desideri che l'API sia accessibile.
  8. In Abilita nome DNS, deseleziona la casella Abilita per questo endpoint. La disattivazione di questa impostazione richiede che Amazon VPC abbia attivato "Nomi host DNS", una funzionalità opzionale. Se si lascia attiva questa impostazione, si interrompe l'accesso alle API pubbliche del Gateway API nell'Amazon VPC distribuito se VPC utilizza il DNS fornito da Amazon.
  9. In Gruppo di sicurezza, scegli il gruppo di sicurezza per l'endpoint Amazon VPC. Il gruppo di sicurezza deve consentire l'accesso tramite TCP/443 in entrata dal tuo Amazon VPC.
  10. In Policy, scegli Accesso completo. Questa opzione consente tutte le connessioni dal tuo Amazon VPC all'endpoint VPC utilizzando le autorizzazioni AWS IAM.
  11. Scegli Crea endpoint.
  12. Prendi nota dell'ID dell'endpoint Amazon VPC (ad esempio, "vpce-01234567890abcdef"). Questo ID servirà in un secondo momento per modificare la policy delle risorse dell'API.

Crea la tua REST API privata, se non ne hai già una

  1. Apri la console Gateway API.
  2. Seleziona la regione della tua connessione Direct Connect.
  3. Scegli Crea API.
  4. In Tipo di API, scegli REST API private.
  5. In Protocollo API, scegli REST.
  6. In Crea una nuova API, scegli API di esempio.
  7. In Impostazioni, verifica che Tipo di endpoint sia impostato su Privato.
  8. Scegli Importa.

Concedi all'endpoint Amazon VPC l'autorizzazione ad accedere alla REST API privata

  1. Nella pagina Gestione dell’API, scegli Policy delle risorse.
  2. Copia la policy sottostante nella tua Policy delle risorse.
    {
      "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:/*/*/*"
        }
      ]
    }
    Sostituisci la stringa {{vpceID}} con l'ID dell'endpoint Amazon VPC che hai annotato dopo aver creato l'endpoint VPC. In alternativa, trova l'ID nella console Amazon VPC in Endpoint.
    Nota: questa policy di esempio consente l'accesso a tutte le risorse sull'API da Amazon VPC. Per limitare ulteriormente l'accesso, modifica la chiave Risorsa.
  3. Scegli Salva.

Implementa l’API per confermare le modifiche

Ora che hai creato l'API e aggiunto una policy delle risorse, implementa l'API in una fase per rendere effettive le modifiche:

  1. Nella console Gateway API, scegli Risorse dal pannello di navigazione.
  2. Scegli Azioni.
  3. In Azioni API, scegli Implementa API.
  4. In Fase dell’implementazione, scegli [New Stage].
  5. Immetti un nome per la fase.
  6. Scegli Implementa. Vengono implementate le modifiche nell'API. La propagazione di questo processo richiede alcuni minuti.

Verifica l'accesso all'API dalla connessione Direct Connect

Segui questi passaggi per testare l'accesso:

  1. Nella console Amazon VPC, scegli Endpoint, quindi seleziona l'endpoint VPC che hai creato.

  2. In Dettagli, copia il nome DNS dell'endpoint VPC. Ad esempio,
    "vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com".

  3. Da un computer connesso ad Amazon VPC tramite Direct Connect, esegui uno dei seguenti comandi per testare la risoluzione del nome host DNS dell'endpoint VPC.

    Windows PowerShell:

    nslookup <YOUR_VPCE_HOSTNAME>

    -oppure-

    macOS/Unix:

    nslookup <YOUR_VPCE_HOSTNAME>

    Nota: sostituisci YOUR_VPCE_HOSTNAME con il nome host dell'endpoint VPC creato in precedenza.

    La risposta restituisce un indirizzo IP privato che corrisponde all’endpoint Amazon VPC. Se nella risposta non ricevi un indirizzo IP privato, controlla il nome host dell'endpoint Amazon VPC sulla console Amazon VPC in Endpoint.

  4. Se il DNS è operativo, effettua una richiesta HTTP di prova. A tale scopo, è necessario l'ID API della console Gateway API. Copia l'ID API dall'elenco. L'ID API è una stringa di caratteri, ad esempio "chw1a2q2xk".

  5. Da un computer on-premises con una connessione Direct Connect, esegui il comando seguente:

    Windows PowerShell:

    curl -H @{'x-apigw-api-id' = '<YOUR_API_ID>'} https://<YOUR_VPCE_HOSTNAME>/<STAGE>

    -oppure-

    macOS/Unix:

    curl -IX GET -H 'x-apigw-api-id:<YOUR_API_ID>' https://<YOUR_VPCE_HOSTNAME>/<STAGE>

    Nota: sostituisci YOUR_API_ID con l'ID della REST API privata o dell'API creata in precedenza. Sostituisci YOUR_VPCE_HOSTNAME con il nome host dell'endpoint VPC e STAGE con la fase di implementazione creata in precedenza.

Accertati di quanto segue:

  • La prima riga della risposta include "HTTP/1.1 200 OK".
  • Se non ricevi una risposta, verifica che il gruppo di sicurezza associato all'endpoint Amazon VPC consenta le connessioni in entrata su TCP/443 dall’indirizzo IP di origine. Verifica inoltre di utilizzare correttamente Direct Connect per la connessione.
  • Se ricevi una risposta "403 Forbidden", verifica di aver impostato l'intestazione <YOUR_API_ID>. Verifica l’invio di una richiesta GET. Controlla inoltre che <STAGE> sia stato aggiunto correttamente.

Nota: le applicazioni client Web servite da un dominio diverso da questa API potrebbero interagire con essa. In questi casi, il browser genera una richiesta preflight di CORS che rende difficile impostare l'intestazione x-apigw-api-id. Per risolvere questo problema, accedi all'API privata utilizzando un alias Route53.

Informazioni correlate

Che cos'è CORS?

Come posso risolvere i problemi di routing del gateway Direct Connect?

Come posso configurare un gateway Direct Connect?

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa