Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Come posso risolvere i problemi che riscontro quando mi connetto a un endpoint API privato di API Gateway?
Desidero risolvere i problemi quando mi connetto al mio endpoint API privato di Gateway Amazon API che si trova in Amazon Virtual Private Cloud (Amazon VPC).
Breve descrizione
Le risorse AWS in Amazon VPC potrebbero non riuscire a connettersi a un endpoint API privato per i seguenti motivi:
- Non hai configurato correttamente la policy delle risorse di API Gateway per l'endpoint API privato.
- Non hai configurato correttamente la policy degli endpoint VPC per l'endpoint VPC dell'interfaccia.
- Non hai configurato correttamente le regole per un gruppo di sicurezza Amazon VPC.
- L'URL di invocazione dell'API privata non include i nomi DNS corretti.
- Non hai associato il nome di dominio personalizzato privato a un endpoint VPC.
- Non hai configurato correttamente la policy delle risorse per il nome di dominio personalizzato privato.
Per determinare la causa, puoi attivare Amazon CloudWatch Logs per l'API ed esaminare i log.
Se la richiesta API non produce log dopo l'attivazione di CloudWatch Logs, la richiesta non ha raggiunto l'endpoint. Se le richieste API non raggiungono l'endpoint, verifica di aver configurato correttamente l'URL di invocazione dell'API privata.
Per ulteriori informazioni, consulta Come faccio a trovare gli errori di REST API in API Gateway nei miei log di CloudWatch?
Nota: una policy delle risorse di API Gateway configurata in modo non corretto o un nome DNS errato nell'URL di invocazione dell'endpoint API privato potrebbero causare problemi di connessione.
Risoluzione
Verifica la causa dell'errore
Completa i seguenti passaggi:
- Attiva CloudWatch Logs per la REST API privata.
- Per Livello, scegli INFO, quindi scegli Registra tutti i dati delle richieste/risposte.
- Visualizza i log di esecuzione della REST API in CloudWatch per identificare la causa del problema.
Se le richieste API raggiungono l'endpoint, viene visualizzato un messaggio di errore simile a uno dei seguenti esempi:
- "User: anonymous is not authorized to perform: execute-api:Invoke on resource:"
- "SSL: no alternative certificate subject name matches target host name custom-domain.com/resource"
- "Connection timed out"
- "Could not resolve host: https://example.com/resource"
"User: anonymous is not authorized to perform: execute-api:Invoke on resource:"
Per risolvere il problema, configura i seguenti criteri:
- La policy delle risorse di API Gateway dell'API privata deve consentire il traffico dall'endpoint VPC dell'interfaccia o dal VPC di origine all'endpoint API.
- La policy degli endpoint VPC deve consentire al client l'accesso all'endpoint API privato. Questa è la policy delle risorse per il servizio execute-api.
- La policy delle risorse del nome di dominio personalizzato deve consentire l'accesso agli endpoint VPC affinché il nome di dominio personalizzato privato possa essere invocato. Per impostazione predefinita, API Gateway fornisce un nome di dominio personalizzato con un rifiuto esplicito nella policy delle risorse del nome di dominio personalizzato. Per ulteriori informazioni, consulta Tutorial: creare e invocare un nome di dominio personalizzato per API private.
Importante: se modifichi la policy delle risorse dell'API, distribuisci l'API alla fase per salvare le modifiche.
"SSL: no alternative certificate subject name matches target host name custom-domain.com/resource"
Per risolvere il problema, controlla se hai creato associazioni di accesso al nome di dominio personalizzato privato per l'endpoint VPC privato per il servizio execute-api.
"Connection timed out"
Per risolvere i problemi di timeout della connessione, completa i seguenti passaggi:
-
Verifica che esista un endpoint VPC per execute-api di API Gateway nel VPC in cui ospiti il client. Quindi assicurati che l'endpoint si trovi nella stessa Regione AWS dell'API privata. Se l'endpoint non esiste, crea un endpoint VPC di interfaccia per execute-api di API Gateway.
-
Utilizza traceroute per verificare che il client che invoca l'API privata esista nello stesso VPC o possa accedere al VPC con l'endpoint VPC.
Per installare traceroute, esegui questi comandi:
Amazon Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
Per utilizzare traceroute per testare la connettività, esegui questo comando:
sudo traceroute -n -T -p 443 VPC-endpoint IP-address
Nota: l'argomento -T -p 443 -n esegue una traccia basata su TCP sulla porta 443. Sostituisci VPC-endpoint IP-address con l'indirizzo IP del tuo endpoint VPC.
-
Verifica di aver configurato correttamente le regole per i gruppi di sicurezza Amazon VPC.
Per testare i gruppi di sicurezza Amazon VPC, esegui questo comando dal client che effettua le richieste all'endpoint API privato:telnet public-dns-hostname.execute-api.region.vpce.amazonaws.com 443
Nota: sostituisci public-dns-hostname con i nomi host DNS pubblici che contengono l'ID dell'endpoint VPC per la tua API. Inoltre, sostituisci region con la Regione in cui si trova l'endpoint VPC dell'interfaccia.
Oppure esegui questo comando dal client che effettua richieste al nome di dominio personalizzato dell'API privata:
telnet custom-domain-name 443
Nota: sostituisci custom-domain-name con il nome del tuo dominio personalizzato dell'API privata.
Se la connessione si interrompe, significa che non hai configurato correttamente le regole per i gruppi di sicurezza Amazon VPC.
La risorsa richiedente deve avere una regola del gruppo di sicurezza che consenta il traffico in uscita dalla porta TCP 443 verso l'intervallo di indirizzi IP o il gruppo di sicurezza dell'endpoint VPC. Inoltre, l'endpoint VPC deve avere una regola del gruppo di sicurezza che consenta il traffico in entrata verso la porta TCP 443 dall'intervallo di indirizzi IP o dal gruppo di sicurezza della risorsa richiedente.
Per ulteriori informazioni, consulta How do I restrict traffic to and from Amazon VPC resources? (Come posso limitare il traffico da e verso risorse Amazon VPC?)
"Could not resolve host:https://www.example.com/resource"
Per risolvere l’errore, intraprendi le seguenti azioni:
- Verifica di aver associato il VPC corretto alla zona ospitata di Amazon Route 53.
- Verifica di aver creato il record per il nome di dominio personalizzato nella zona ospitata di Route 53 con destinazione il nome DNS dell'endpoint VPC come alias.
Verifica che il dominio dell'endpoint API privato si risolva correttamente nell'indirizzo IP dell'endpoint VPC
Nota: assicurati che il client si trovi all'interno del VPC in cui esiste l'endpoint VPC per execute-api.
Completa i seguenti passaggi:
- Esegui questo comando nslookup dal client che effettua richieste all'endpoint API privato:
Nota: sostituisci restapi-id con l'ID della tua API privata e region con la Regione in cui si trova il tuo endpoint API privato.nslookup restapi-id.execute-api.region.amazonaws.com
- Esegui questo comando nslookup dal client che effettua richieste al nome di dominio personalizzato dell'API privata:
Nota: sostituisci custom-domain-name con il nome di dominio personalizzato della tua API privata. Un output corretto mostra gli indirizzi IP privati dell'endpoint VPC.nslookup custom-domain-name
- Esegui questo comando nslookup:
Nota: sostituisci public-dns-hostname con i nomi host DNS pubblici che contengono l'ID dell'endpoint VPC per la tua API. Sostituisci region con la Regione in cui si trova l'endpoint VPC dell'interfaccia. Un output corretto mostra gli indirizzi IP privati dell'endpoint VPC.nslookup public-dns-hostname.execute-api.region.vpce.amazonaws.com
- Confronta gli indirizzi IP nell'output di ogni comando. Se gli indirizzi IP nell'output di ogni comando corrispondono, la configurazione funziona come dovrebbe.
Per attivare il DNS privato per l'endpoint VPC, completa i seguenti passaggi.
- Apri la console Amazon VPC.
- Nel pannello endpoint, seleziona l'endpoint VPC dell'interfaccia.
- Scegli Operazioni.
- Scegli Modifica nomi DNS privati.
- Seleziona Abilita nome DNS privato, quindi scegli Salva modifiche.
La richiesta API non produce log in CloudWatch dopo l'attivazione di CloudWatch Logs
Per risolvere l’errore, intraprendi le seguenti azioni:
- Configura correttamente la policy delle risorse di API Gateway dell'endpoint API privato.
- Formatta correttamente l'URL di invocazione dell'API privata per accedere all'endpoint API privato.
Nota: se hai attivato un DNS privato, devi utilizzare nomi host DNS pubblici specifici per gli endpoint. Se non hai attivato un DNS privato, utilizza nomi DNS privati. - Associa il nome di dominio personalizzato dell'API privata alla fase API corretta.
Informazioni correlate
Perché ricevo un errore HTTP 403 Forbidden quando mi connetto alle mie API di Gateway API da un VPC?
How do I monitor traffic in my VPC with flow logs? (Come posso monitorare il traffico nel mio VPC con i log di flusso?)
Video correlati

