Come posso accedere a un'API REST privata di API Gateway in un altro account AWS utilizzando un endpoint VPC di interfaccia?

8 minuti di lettura
0

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

Breve descrizione

Per utilizzare un endpoint VPC di interfaccia per accedere a un'API REST 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 un'API REST privata di API Gateway in un secondo account (account B).
  3. Configura una policy di risorse per l'API REST privata che consenta all'endpoint di interfaccia di richiamare l'API.
  4. Configura un metodo per l'API REST privata.
  5. Implementa l'API REST privata.
  6. Chiama l'API REST privata dall'account A per testare la configurazione.

Nota: l'API REST privata di Amazon API Gateway e l'endpoint VPC devono trovarsi nella stessa regione AWS.

Risoluzione

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

Crea una nuova interfaccia endpoint VPC

Dall'account A, segui le istruzioni in Creazione di un endpoint VPC dell’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 dell’API Gateway per limitare l'accesso agli endpoint in base al responsabile. Per ulteriori informazioni sui consigli di sicurezza relativi alla concessione dei privilegi minimi, consulta Assegna le autorizzazioni con privilegi minimi nella Guida per l'utente IAM.

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 scelto Crea endpoint e creato l'endpoint di interfaccia, viene visualizzato l'ID endpoint VPC. Copia l'ID endpoint VPC del tuo nuovo endpoint di interfaccia (ad esempio: vpce-1a2b3c456d7e89012). Quindi, scegli Chiudi.

Nota: usa questo ID per creare e configurare la tua API REST 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, trova e copia il nome DNS pubblico per l'endpoint di interfaccia. Ad esempio: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

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

1.    Nell'account B, apri la console API Gateway.

2.    Scegli Crea API.

3.    In Scegli un tipo di API, in REST API private, 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:
In Nome API, inserisci un nome per l’API.
(Facoltativo) In Descrizione, inserisci una descrizione per l’API.
Mantieni Tipo di endpoint impostato su Privato.
Per gli ID Endpoint VPC, incolla l'ID endpoint di interfaccia. Quindi, scegli Aggiungi.
Nota: quando associ l'endpoint dell'interfaccia alla tua API REST privata, API Gateway genera un nuovo record di alias Amazon Route 53. Puoi usare l'alias Route53 per accedere all’API privata.

7.    Scegli Crea API.

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

Configura una policy di risorse per l'API REST 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, incolla il seguente esempio di policy di risorse nella casella di testo:

Nota: sostituisci vpce-1a2b3c456d7e89012 con l'ID endpoint di interfaccia che hai copiato.

{
  "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:/*/*/*"
    }
  ]
}

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

Configura un metodo per l'API REST 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.    Nell'elenco a discesa 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. Questa risposta aiuta durante il test.

5.    Scegli Salva.

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

Distribuisci l'API REST 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 [Nuova fase].
In Nome fase, inserisci un nome. Ad esempio, dev o test.
Scegli Distribuisci.

3.    Nel riquadro Editor di fase, trova il messaggio ("Se il DNS privato è abilitato, usa questo URL"). Ciò include l'URL di richiamo dell’API REST privata. Copia l'URL.
Nota: usa l'URL di richiamo dell'API REST privata per testare la configurazione.

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

Prova la configurazione chiamando l'API REST privata dall'account A

1.    Nell'account A, avvia un'istanza Amazon Elastic Compute Cloud (Amazon EC2) nello stesso Amazon VPC dell'endpoint di interfaccia.
Importante: durante la configurazione, scegli il gruppo di sicurezza esistente che hai associato all'endpoint di interfaccia.

2.    Connettiti all'istanza di Amazon EC2.

Nota: un'istanza di Amazon EC2 può comportare costi per il tuo account AWS. Se crei un'istanza solo per testare questa configurazione, interrompi l'istanza quando hai finito per evitare addebiti ricorrenti.

3.    Dalla riga di comando della tua istanza di Amazon EC2, utilizza uno dei seguenti comandi curl per chiamare l'API REST 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, visitate il sito web del progetto curl.

Chiama l’API utilizzando un nome DNS privato

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 dell’API privata che hai copiato dalla console API Gateway. 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.

Chiama la tua API usando un alias Route 53

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

Nota: sostituisci a1bc234d5e con l’ID dell’API.
Sostituisci vpce-1a2b3c456d7e89012 con l'ID endpoint di interfaccia.
Sostituisci la regione con la regione dell’API. (Ad esempio, us-east-1.)
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.

Chiama l’API utilizzando un nome DNS pubblico con un'intestazione host

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 DNS pubblico che hai annotato nella console Amazon VPC.
Sostituisci 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 dell’API privata dalla console API Gateway.

Chiama l’API utilizzando un nome DNS pubblico con l'intestazione x-apigw-api-id

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 DNS pubblico che hai annotato nella console Amazon VPC.
Sostituisci stage-name con il nome della fase in cui hai distribuito l’API privata.
Sostituisci a1bc234d5e con l'ID dell’API.

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


Informazioni correlate

Utilizzo di policy di endpoint VPC per API private in API Gateway

How do I troubleshoot issues when connecting to an API Gateway private API endpoint?

Accesso a un Servizio AWS utilizzando un endpoint VPC dell'interfaccia