Salta al contenuto

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

7 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 di Gateway API e l'endpoint VPC devono trovarsi nella stessa Regione AWS.

Risoluzione

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

Crea un nuovo endpoint VPC di interfaccia

Dall'account A, segui le istruzioni in Creare un endpoint VPC di interfaccia per Gateway API nel VPC.

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

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

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

Dopo aver creato l'endpoint di interfaccia, viene visualizzato il valore ID endpoint VPC. Copia il valore ID endpoint VPC del nuovo endpoint di interfaccia, ad esempio: vpce-1a2b3c456d7e89012.

Nota: utilizza il valore ID endpoint VPC quando crei e configuri la REST API privata.

Recupera il nome DNS pubblico dell'endpoint di interfaccia

Nella console Amazon VPC viene visualizzata la pagina Endpoint viene visualizzata. 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 Gateway API in un secondo account (account B)

  1. Nell'account B, apri la console Gateway API.
  2. Scegli Crea API.
  3. In Scegli un tipo di API, nella sezione REST API privata, scegli Crea.
  4. In Dettagli API, 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 ID endpoint VPC, inserisci l'ID dell'endpoint di interfaccia. quindi scegli Add (Aggiungi).
    Nota: quando associ l'endpoint di interfaccia alla REST API privata, Gateway API genera un nuovo record alias Amazon Route 53. Puoi usare l'alias Route53 per accedere all'API privata.
  5. Scegli Crea API.

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

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

  1. Nel pannello di navigazione della console Gateway API, nell'API, scegli Policy delle risorse.
  2. Nella pagina Policy delle risorse, inserisci nella casella di testo il seguente esempio di policy della risorse:
    {  "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 Impostare una policy delle risorse per un'API privata.

Configura un metodo per la REST API privata

  1. Nel pannello di navigazione della console Gateway API, nell'API, scegli Risorse.
  2. Nel pannello Risorse, scegli Operazioni, 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 pannello / - 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 Metodi per le API REST in Gateway API.

Distribuisci la REST API privata

  1. Nel pannello Risorse della console Gateway API, scegli Operazioni, quindi scegli Distribuisci l'API.
  2. Nella finestra di dialogo Distribuisci l'API, inserisci le seguenti informazioni:
    In Fase di distribuzione, scegli [New Stage].
    In Nome fase, inserisci un nome. Ad esempio, dev o test.
  3. Scegli Distribuisci.
  4. Nel pannello Stage Editor (Editor di fase), individua il messaggio If Private DNS is enabled, use this URL: (Se il DNS privato è abilitato, utilizza questo URL:). Copia l'URL di invocazione della REST API privata.
    Nota: utilizza l'URL di invocazione della REST API privata per testare la configurazione.

Per ulteriori informazioni, consulta Implementare un'API privata.

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 VPC dell'endpoint di interfaccia.
    Importante: scegli il gruppo di sicurezza che hai associato all'endpoint di interfaccia.
  2. Connettiti all'istanza Amazon EC2.
    Nota: un'istanza EC2 può comportare costi per l'account AWS. Se crei un'istanza da testare, interrompi l'istanza quando hai terminato per evitare ulteriori addebiti.
  3. Dalla riga di comando dell'istanza Amazon EC2, utilizza uno dei seguenti comandi curl per chiamare la REST API privata nell'account B.
    Nota: per ulteriori informazioni, consulta Invocazione di un'API privata tramite nomi host DNS pubblici specifici dell'endpoint.
    Per un nome DNS privato
    Esegui questo 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 invocazione dell'API privata. Il comando funziona solo se hai attivato un DNS privato per l'endpoint di interfaccia. Per ulteriori informazioni, consulta Invocazione di un'API privata utilizzando nomi DNS privati.
    Per un alias Route53
    Esegui questo 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 region con la Regione della tua API. Sostituisci stage-name con il nome della fase in cui hai distribuito la tua API privata. Per ulteriori informazioni, consulta Invocazione di un'API privata utilizzando un alias Route53.
    Per un nome DNS pubblico con intestazione host
    Esegui questo 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 del tuo endpoint di interfaccia e stage-name con il nome della fase in cui hai distribuito la tua API privata. Sostituisci a1bc234d5e.execute-api.region.amazonaws.com con l'URL di invocazione della tua API privata.
    Per un nome DNS pubblico con intestazione x-apigw-api-id
    Esegui questo 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 del tuo endpoint di interfaccia e stage-name con il nome della fase in cui hai distribuito la tua API privata. Sostituisci a1bc234d5e con l'ID della tua API.
  4. Esamina l'output del comando. Gateway API restituisce una risposta 200 OK se la connessione ha esito positivo.

Informazioni correlate

Come posso risolvere i problemi che riscontro quando mi connetto a un endpoint API privato di Gateway API?

Accedere a un servizio AWS utilizzando un endpoint VPC di interfaccia

API Gateway privato multiregionale