Come faccio a richiamare un'API privata di API Gateway utilizzando una Application Load Balancer o Network Load Balancer?

5 minuti di lettura
0

Desidero configurare la mia API privata Amazon API Gateway come obiettivo di un sistema di bilanciamento del carico. Quindi, voglio utilizzare un account AWS per accedere alla mia API privata da un Application Load Balancer o da un Network Load Balancer.

Breve descrizione

Per accedere alla tua API privata tramite AWS Direct Connect o Amazon Route 53, consulta Come richiamare un'API privata. Puoi anche accedere a una REST API privata di API Gateway in un altro account AWS utilizzando un endpoint VPC di interfaccia.

La risoluzione seguente utilizza un indirizzo IP di interfaccia di rete elastica dell'endpoint Amazon Virtual Private Cloud (Amazon VPC). Con questo indirizzo IP, puoi aggiungere la tua API privata come destinazione al sistema di bilanciamento del carico.

Importante: API Gateway non supporta nomi di dominio personalizzati per le API private. Per aggirare il problema, puoi richiamare e collegare il dominio a un sistema di bilanciamento del carico. Quindi, utilizza la seguente configurazione per richiamare l'API privata.

Risoluzione

Creare un endpoint Amazon VPC

1.    Apri la console Amazon VPC.

2.    Seleziona Endpoint, poi Crea endpoint.
Nota: Se hai già degli endpoint Amazon VPC configurati nel tuo VPC con l'API execute-api, disattiva il DNS privato.

3.    Per i servizi, scegli com.amazonaws.com.your-region.execute-api.

4.    In VPC, seleziona il tuo Amazon VPC.

5.    Per le sottoreti, seleziona due sottoreti in diverse zone di disponibilità (ID AZ), quindi scegli Crea endpoint.

6.    Seleziona il tuo endpoint, scegli le sottoreti, quindi copia l'indirizzo IP.

Per ulteriori informazioni, consulta Creare un endpoint VPC di interfaccia per API Gateway execute-api.

Creare una REST API privata e concedere l'autorizzazione all'endpoint Amazon VPC

1.    Apri la console API Gateway, quindi scegli Crea API.

2.    In REST API, scegli Build.

3.    In Impostazioni, inserisci le seguenti informazioni: 
In Nome API, inserisci un nome per l'API.
In Tipo di endpoint, scegli Privato.
In ID dell'endpoint, inserisci l'ID dell'endpoint che hai creato.

4.    Seleziona Crea API.

5.    Nel riquadro di navigazione, seleziona Criteri risorse.

6.    Nell'editor dei criteri delle risorse, incolla il seguente criterio:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-081234d1ad408e"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/*/*"
    }
  ]
}

Nota: Sostituisci vpce-081234d1ad408e con il tuo ID endpoint VPC. Sostituisci arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID con l'ARN della tua API.

7.    Seleziona Salva.

Per ulteriori informazioni, consulta Creare un'API privata utilizzando la console API Gateway.

Creare o importare un certificato pubblico di AWS Certificate Manager

Richiedi un certificato pubblico o importa un certificato.

Creare un sistema di bilanciamento del carico delle applicazioni o un sistema di bilanciamento del carico di rete

Crea un Application Load Balancer o crea un Network Load Balancer.

Creare gruppo di destinazione

1.    Apri la console Amazon Elastic Compute Cloud (Amazon EC2).

2.    Nel riquadro di navigazione, in Load Balancing, scegli Sistema di bilanciamento del carico, quindi seleziona Gruppi di destinazione.

3.    Scegli Crea gruppo di destinazione.

4.    Per il tipo di destinazione, seleziona Indirizzi IP.

5.    In Nome gruppo di destinazione, inserisci un nome.

Application Load Balancer

Per Protocollo, seleziona HTTPS.
Per Porta, seleziona 443.
Per VPC, seleziona il tuo VPC.
Per il percorso di controllo dell'integrità, inserisci 200.403 in modo che l'endpoint VPC venga visualizzato come Integro nel gruppo di destinazione.

Network Load Balancer

Per Protocollo, scegli TLS.
Per Porta, seleziona 443.
Per VPC, seleziona il tuo VPC.

6.    Scegli Avanti.

7.    In Specifica gli IP, inserisci l'indirizzo IP che hai copiato nella sezione Creare un'interfaccia Amazon VPC endpoint, quindi scegli Aggiungi indirizzo IPv4.

8.    Scegli Crea gruppo di destinazione.

Configurazione del sistema di bilanciamento del carico

1.    Apri la console EC2.

2.    Nel riquadro di navigazione, seleziona Sistemi di bilanciamento del carico, quindi seleziona Crea sistema di bilanciamento del carico.

Application Load Balancer

Per Schema, scegli Connessione internet o Interno, a seconda della configurazione.
Per Protocollo, seleziona HTTPS.
Per VPC e sottoreti, seleziona il tuo VPC e le sottoreti.

Network Load Balancer

Per Schema, scegli Connessione internet o Interno, a seconda della configurazione.
Per Protocollo, scegli TLS.
Per VPC e sottoreti, seleziona il tuo VPC e le sottoreti.
Per Politica di sicurezza, seleziona il criterio predefinito ELBSecurityPolicy-TLS (consigliato).
Per il certificato SSL/TLS predefinito, scegli Da ACM.
Scegli il menu a discesa Seleziona un certificato, quindi seleziona il tuo certificato.

3.    Scegli Crea sistema di bilanciamento del carico.

Nota: Gli obiettivi del sistema di bilanciamento del carico si trovano negli indirizzi IP dell'interfaccia di rete elastica creata dall'endpoint VPC. Per trovare queste interfacce di rete elastiche, seleziona il tuo endpoint VPC, quindi apri la scheda Sottoreti.

Crea un record in una zona ospitata pubblica o privata di Amazon Route 53

Crea una zona ospitata pubblica o crea una zona ospitata privata.

Quindi, crea un record CNAME e associalo al tuo Application Load Balancer o Network Load Balancer.

Test

Per i sistemi di bilanciamento del carico pubblici, puoi effettuare una richiesta di curl dal tuo computer locale.

Per i sistemi di bilanciamento del carico privati, avvia una nuova istanza EC2 in una delle sottoreti del tuo sistema di bilanciamento del carico. Quindi, effettua una richiesta curl simile a questa:

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

-or-

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

Una richiesta riuscita restituisce un codice di risposta 200 OK. Una richiesta non riuscita restituisce un codice di risposta 403 Forbidden o un errore di risoluzione DNS. In caso di problemi, consulta Risoluzione dei problemi relativi ai sistemi di bilanciamento del carico.

Informazioni correlate

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

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

Monitorare le REST API con i parametri di Amazon CloudWatch

Configurare la registrazione di CloudWatch per una REST API in API Gateway