Come posso richiamare un'API privata di Gateway Amazon API utilizzando un Application Load Balancer o un Network Load Balancer?

Ultimo aggiornamento: 03/11/2022

Desidero configurare la mia API privata di Gateway Amazon API come destinazione dietro un load balancer. Quindi, voglio accedere alla mia API privata da un Application Load Balancer o da un Network Load Balancer utilizzando il mio account o un altro account AWS. Come posso farlo?

Breve descrizione

Per accedere all'API privata utilizzando AWS Direct Connect o Amazon Route 53, consulta la pagina Come invocare un'API privata. Puoi anche accedere a una REST API privata di Gateway API in un altro account AWS utilizzando un endpoint VPC di interfaccia.

Nella seguente configurazione, l'API privata viene aggiunta come destinazione al load balancer. Questa operazione viene eseguita utilizzando l'indirizzo IP dell'interfaccia di rete elastica dell'endpoint Amazon Virtual Private Cloud (Amazon VPC).

Importante: i nomi di dominio personalizzati non sono supportati per le API private. Come soluzione alternativa, puoi richiamare e collegare il dominio a un load balancer. Quindi, richiama l'API privata utilizzando la configurazione descritta in questo articolo.

Risoluzione

Crea un endpoint Amazon VPC

1.    Apri la console Amazon VPC, scegli Endpoints (Endpoint) e poi Create endpoint (Crea endpoint).
Nota: se hai già configurato un endpoint Amazon VPC nel tuo VPC utilizzando l'API execute-api, assicurati che il DNS privato sia disabilitato.

2.    Per Services (Servizi), scegli com.amazonaws.com.your-region.execute-api.

3.    Per VPC, scegli il tuo Amazon VPC.

4.    Per Subnets (Sottoreti), scegli due sottoreti in zone di disponibilità diverse (ID AZ), quindi scegli Create endpoint (Crea endpoint).

5.    Scegli il tuo endpoint, scegli le sottoreti e copia l'indirizzo IP. Questo indirizzo IP verrà utilizzato in un altro passaggio.

Per ulteriori informazioni, consulta la pagina Creazione di un endpoint VPC dell'interfaccia per Gateway API execute-api.

Crea una REST API privata e concedi l'autorizzazione all'endpoint Amazon VPC

1.    Apri la console Gateway Amazon API, quindi scegli Create API (Crea API).

2.    Per REST API, scegli Build (Costruisci).

3.    In Settings (Impostazioni), inserisci quanto segue:
Per API Name (Nome dell'API), inserisci un nome per l'API.
Per Endpoint Type (Tipo di endpoint), scegli Private (Privato).
Per Endpoint IDs (ID degli endpoint), inserisci l'ID dell'endpoint che hai creato in precedenza.

4.    Scegli Create API (Crea API).

5.    Nel pannello di navigazione, scegli Resource Policy (Policy della risorsa).

6.    Nell'editor della policy delle risorsa, incolla la seguente policy:
Nota:
sostituisci vpce-<id> con l'ID dell'endpoint VPC.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<region>:<account :<api-id>/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-081234d1ad408e"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/*/*/*"
    }
  ]
}

7.    Scegli Save (Salva).

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

Crea o importa un certificato pubblico della Gestione certificati AWS (ACM)

Se non l'hai ancora fatto, esegui una delle seguenti operazioni:

Richiedi un certificato pubblico.

-oppure-

Importa un certificato

Crea un Application Load Balancer o un Network Load Balancer

Se non l'hai ancora fatto, esegui una delle seguenti operazioni:

Crea un Application Load Balancer

-oppure-

Crea un Network Load Balancer

Crea il gruppo di destinazione

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

2.    Nel pannello di navigazione, in Load Balancing, scegli Load Balancer, poi Target Groups (Gruppi di destinazione) e in fine Create target group (Crea gruppo di destinazione).

3.    Per Target type (Tipo di destinazione), scegli IP addresses (Indirizzi IP).

4.    per Target group name (Nome del gruppo di destinazione), inserisci un nome per il gruppo.

Application Load Balancer

Per Protocol (Protocollo), scegli HTTPS.
Per Port (Porta), scegli 443.
Per VPC, scegli il tuo VPC.
Per il percorso di controllo dell'integrità, inserisci 200,403. (Ciò garantisce che l'endpoint VPC venga visualizzato come Healthy (Integro) nel gruppo di destinazione)

Network Load Balancer

Per Protocol (Protocollo), scegli TLS.
Per Port (Porta), scegli 443.
Per VPC, scegli il tuo VPC.

5.    Scegli Next (Avanti).

6.    In Specify IPs (Specifica gli IP), inserisci l'indirizzo IP che hai copiato nella sezione Create an interface Amazon VPC endpoint (Crea un endpoint Amazon VPC di interfaccia) e scegli Add IPv4 address (Aggiungi indirizzo IPv4).

7.    Scegli Create target group (Crea gruppo di destinazione).

Configura il load balancer

1.    Apri la console di EC2.

2.    Nel pannello di navigazione, scegli Load Balancer, quindi scegli Create Load Balancer (Crea load balancer).

Application Load Balancer

Per Scheme (Schema), scegli Internet-facing (Connessione internet) o Internal (Connessione interna) a seconda della configurazione.
Per Protocol (Protocollo), scegli HTTPS.
Per VPC e Subnets (Sottoreti), scegli il tuo VPC e le tue sottoreti.

Network Load Balancer Per Scheme (Schema), scegli tra Internet-facing (Connessione internet) o Internal (Connessione interna) a seconda della configurazione.
Per Protocol (Protocollo), scegli TLS.
Per VPC e Subnets (Sottoreti), scegli il tuo VPC e le tue sottoreti.
Per Security policy (Policy di sicurezza), scegli la policy predefinita ELBSecurityPolicy-TLS (recommended).
Per Default SSL/TLS certificate (Certificato SSL/TLS predefinito), scegli From ACM (Da ACM).
Scegli il menu a discesa Select a certificate (Seleziona un certificato), quindi scegli il tuo certificato.

3.    Seleziona Create load balancer (Crea load balancer).

Nota: le destinazioni del load balancer devono essere gli indirizzi IP dell'interfaccia di rete elastica creata dall'endpoint VPC. Questi sono stati eseguiti nel passaggio 1. Puoi trovare queste interfacce di rete elastiche selezionando l'endpoint VPC e aprendo la scheda Sottoreti.

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

Se non l'hai ancora fatto, esegui una delle seguenti operazioni:

Crea una zona ospitata pubblica

-oppure-

Crea una zona ospitata privata

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

Test

Per i load balancer pubblici, puoi effettuare una richiesta curl dal tuo computer locale.

Per i load balancer privati, avvia una nuova istanza EC2 in una delle sottoreti del tuo load balancer. Quindi, fai una richiesta curl simile alla seguente:

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

-oppure-

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 la pagina Troubleshoot your load balancers (Risoluzione dei problemi relativi ai load balancer).


Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?