Come posso utilizzare un endpoint VPC di interfaccia per accedere a una REST API privata del Gateway API in un altro account?

8 minuti di lettura
0

Desidero utilizzare un endpoint cloud privato virtuale (VPC) di interfaccia per accedere a una REST API privata del Gateway Amazon API che si trova in un altro account AWS.

Breve descrizione

Per utilizzare un endpoint VPC di interfaccia per accedere a una REST API privata di API Gateway che si trova in un altro account AWS, completa i seguenti passaggi:

  1. Crea un endpoint di interfaccia in un Amazon Virtual Private Cloud (Amazon VPC) in un account (account A).
  2. Crea una REST API privata di API Gateway in un secondo account (account B).
  3. Configura una policy di risorse per la REST API privata che consenta all'endpoint di interfaccia di richiamare l'API.
  4. Configura un metodo per la REST API privata.
  5. Implementa la REST API privata.
  6. Chiama la REST API privata dall'account A per testare la configurazione.

Nota: la REST API privata del Gateway Amazon API e l'endpoint VPC devono trovarsi nella stessa Regione AWS.

Risoluzione

Crea un endpoint di interfaccia in un Amazon VPC in un account (account A)

Crea un nuovo endpoint VPC di interfaccia

Dall'account A, segui le istruzioni in Creazione di un endpoint VPC di interfaccia per API Gateway execute-api.

Importante: in Policy, scegli Accesso completo. È consigliabile utilizzare una policy di endpoint VPC per limitare l'accesso agli endpoint tramite ID API. È inoltre consigliabile utilizzare la policy di risorse di API Gateway per limitare l'accesso agli endpoint in base al principale. Per ulteriori informazioni, consulta la sezione Assegna le autorizzazioni con privilegi minimi.

Quando crei l'endpoint di interfaccia, considera di intraprendere le seguenti azioni:

Recupera l'ID dell'endpoint VPC per l'endpoint di interfaccia

Dopo aver creato l'endpoint di interfaccia, viene visualizzato l'ID dell'endpoint VPC. Copia l'ID dell’endpoint VPC del tuo nuovo endpoint di interfaccia, ad esempio: vpce-1a2b3c456d7e89012. Quindi, scegli Chiudi.

Nota: usa questo ID quando crei e configuri la tua REST API privata.

Recupera il nome DNS pubblico dell'endpoint di interfaccia

Dopo aver scelto Chiudi, si apre la pagina Endpoint nella console Amazon VPC. Nella scheda Dettagli della pagina Endpoint, nella colonna Nomi DNS, copia il nome DNS pubblico per l'endpoint di interfaccia, ad esempio: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

Crea una REST API privata di API Gateway in un secondo account (account B)

  1. Nell'account B, apri la console API Gateway.
  2. Seleziona Crea API.
  3. In Scegli un tipo di API, nella sezione REST API privata, scegli Crea.
  4. Nella pagina Crea, mantieni Scegli il protocollo impostato su REST.
  5. In Crea nuova API, scegli Nuova API.
  6. In Impostazioni, inserisci le seguenti informazioni:
    Nella sezione Nome API, inserisci un nome.
    (Facoltativo) In Descrizione, inserisci una descrizione.
    Mantieni Tipo di endpoint impostato su Privato.
    Per gli ID dell'endpoint VPC, inserisci l'ID dell'endpoint di interfaccia. Quindi, scegli Aggiungi.
    Nota: quando associ l'endpoint di interfaccia alla tua REST API privata, API Gateway genera un nuovo record alias Amazon Route 53. Puoi usare l'alias Route53 per accedere all'API privata.
  7.  Seleziona Crea API.

Per ulteriori informazioni, consulta Creazione di un'API privata in Gateway Amazon API.

Configura una policy di risorse per la REST API privata che consenta all'endpoint di interfaccia di richiamare l'API

1.    Nel riquadro di navigazione della console API Gateway, nella tua API, scegli Policy di risorse.

2.    Nella pagina Policy di risorse, inserisci il seguente esempio di policy di risorse nella casella di testo:

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

Nota: sostituisci vpce-1a2b3c456d7e89012 con l'ID dell'endpoint di interfaccia.

Per ulteriori informazioni, consulta Impostazione di una policy di risorse per un'API privata.

Configura un metodo per la REST API privata

  1. Nel riquadro di navigazione della console API Gateway, nella tua API, scegli Risorse.
  2. Nel riquadro Risorse, scegli Azioni, quindi scegli Crea metodo.
  3. Nel menu a tendina sotto il nodo / resource, scegli QUALSIASI, quindi scegli l'icona del segno di spunta.
  4.  Nel riquadro / - ANY - Setup, in Tipo di integrazione scegli Fittizio.
    Nota: un’integrazione fittizia risponde a qualsiasi richiesta che le pervenga.
  5. Scegli Salva.

Per ulteriori informazioni, consulta Configurazione dei metodi della REST API in API Gateway.

Distribuisci la REST API privata

  1. Nel riquadro Risorse della console API Gateway, scegli Azioni, quindi scegli Distribuisci l'API.
  2. Nella finestra di dialogo Distribuisci l'API, inserisci le seguenti informazioni:
    In Fase di distribuzione, scegli [New Stage].
    Per Nome fase, inserisci un nome, ad esempio dev o test.
  3. Scegli Distribuisci.
  4.  Nel riquadro Editor di fase, trova il messaggio: Se il DNS privato è abilitato, usa questo URL:. Copia l'URL di richiamo della tua REST API privata.
    Nota: usa l'URL di richiamo della REST API privata per testare la configurazione.

Per ulteriori informazioni, consulta Distribuzione di un'API privata tramite la console API Gateway.

Chiama la REST API privata dall'account A per testare la configurazione

  1. Nell'account A, avvia un'istanza Amazon Elastic Compute Cloud (Amazon EC2) nello stesso Amazon VPC dell'endpoint di interfaccia.
    Importante: scegli il gruppo di sicurezza che hai associato all'endpoint di interfaccia.
  2. Connettiti all'istanza di Amazon EC2.
    Nota: un'istanza EC2 può comportare costi per il tuo account AWS. Se crei un'istanza da testare, interrompi l'istanza quando hai finito per evitare addebiti ricorrenti.
  3. Dalla riga di comando della tua istanza Amazon EC2, utilizza uno dei seguenti comandi curl per chiamare la REST API privata nell'account B.
    Nota: per ulteriori informazioni, consulta Invocare l'API privata tramite nomi host del DNS pubblico specifici dell'endpoint. Per ulteriori informazioni su curl, visita il sito Web del progetto curl.

Per un nome DNS privato

Esegui il seguente comando:

curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name

Nota: sostituisci https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name con l'URL di richiamo della tua API privata. Questo comando funziona solo se hai attivato il DNS privato per l'endpoint di interfaccia. Per ulteriori informazioni, consulta Invocare l'API privata tramite i nomi DNS privati.

Per un alias Route 53 

Esegui il seguente comando:

curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name

Nota: sostituisci a1bc234d5e con l'ID della tua API, vpce-1a2b3c456d7e89012 con l'ID dell'endpoint di interfaccia e la regione con la Regione dell'API. Sostituisci stage-name con il nome della fase in cui hai distribuito l'API privata. Per ulteriori informazioni, consulta Accesso all'API privata tramite un alias Route53.

Per un nome DNS pubblico con un'intestazione host

Esegui il seguente comando:

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"

Nota: sostituisci vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com con il nome del DNS pubblico dell'endpoint di interfaccia e stage-name con il nome della fase in cui hai distribuito l'API privata. Sostituisci a1bc234d5e.execute-api.region.amazonaws.com con l'URL di richiamo della tua API privata.

Per un nome DNS pubblico con l'intestazione x-apigw-api-id

Esegui il seguente comando:

curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"

Nota: sostituisci vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com con il nome del DNS pubblico dell'endpoint di interfaccia e stage-name con il nome della fase in cui hai distribuito l'API privata. Sostituisci a1bc234d5e con l'ID dell'API.

4.    Verifica l'output del comando. API Gateway restituisce una risposta 200 OK se la connessione ha esito positivo.

Informazioni correlate

Come posso risolvere i problemi durante la connessione a un endpoint API privato di API Gateway?

Accesso a un servizio AWS utilizzando un endpoint VPC di interfaccia

API Gateway privato multiregionale