Perché ricevo l'errore HTTP "403 Forbidden" quando provo a connettermi alle mie API pubbliche di Gateway API da un VPC?
Quando chiamo la mia API pubblica di Gateway Amazon API dal mio Amazon Virtual Private Cloud (Amazon VPC), ricevo un errore HTTP "403 Forbidden".
Breve descrizione
Poiché gli endpoint Amazon VPC di interfaccia indirizzano il traffico solo verso le API private, puoi ricevere un errore HTTP "403 Forbidden" quando tenti di accedere alle API pubbliche di Gateway API.
L'errore HTTP "403 Forbidden" si verifica quando tenti di accedere a un'API pubblica di Gateway API da un VPC con nomi DNS privati attivati. Se attivi i nomi DNS privati, tutte le richieste da Amazon VPC alle API di Gateway API vengono risolte nell'endpoint VPC di interfaccia.
Tuttavia, non puoi utilizzare un endpoint VPC di interfaccia per connetterti alle API pubbliche perché il nome DNS privato dell'endpoint è nel formato *.execute-api.{region}.amazonaws.com. Il carattere***** è un segnaposto per l'ID dell'API. Questo formato corrisponde all'URL di invocazione predefinito di Gateway API sia per le API pubbliche che per quelle private.
Quando attivi i nomi DNS privati, le chiamate agli URL delle API di Gateway API nel formato***.execute-api.{region}.amazonaws.com** si risolvono negli indirizzi IP privati dell'endpoint VPC di interfaccia. Questa impostazione indirizza tutto il traffico ad Gateway API tramite l'endpoint VPC di interfaccia per le API pubbliche e private.
Ricevi anche un errore "403 Forbidden" quando utilizzi AWS Direct Connect per invocare l'URL execute-api predefinito per connetterti ad API private da una rete locale.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Verifica se Amazon VPC utilizza impostazioni DNS private
Per risolvere l'errore HTTP "403 Forbidden", determina prima di tutto se Amazon VPC utilizza impostazioni DNS private o pubbliche. Puoi utilizzare AWS CLI o la console Amazon VPC.
AWS CLI
Esegui questo comando describe-vpc-endpoints:
export VPC_ID=YOUR_VPC_ID export REGION=YOUR_REGION aws ec2 describe-vpc-endpoints \ --filters "Name=vpc-id,Values=${VPC_ID}" \ "Name=service-name,Values=com.amazonaws.${REGION}.execute-api" \ --query 'Amazon VPC endpointndpoints[].{Name:Tags[?Key==`Name`].Value|[0],Amazon VPC endpointndpointId:Amazon VPC endpointndpointId,PrivateDnsEnabled:PrivateDnsEnabled}' \ --output table
Nota: sostituisci YOUR_VPC_ID con l'ID del tuo VPC e YOUR_REGION con la tua Regione AWS.
Console Amazon VPC
Verifica se hai attivato il nome DNS privato nella configurazione dell'endpoint VPC di interfaccia. Inoltre, controlla se è presente un endpoint VPC di interfaccia per accedere a una REST API privata nel VPC. Se è presente un endpoint VPC di interfaccia, controlla se hai attivato gli attributi DNS.
Connettiti alle API pubbliche con nomi DNS privati attivati
Se hai attivato il DNS privato, configura nomi di dominio personalizzati ottimizzati per l'edge o nomi di dominio personalizzati Regionali per connetterti alle API pubbliche. Puoi quindi invocare l'API pubblica di Gateway API con il nome di dominio personalizzato, ad esempio api.esempio.com. La connettività alle REST API private continua a funzionare tramite l'endpoint delle REST API private.
Se i client si connettono da una rete on-premises, configura un endpoint in entrata del risolutore Amazon Route 53. Per utilizzare l'URL di invocazione execute-api, inoltra tutte le query al DNS privato dalla rete on-premises all'endpoint in entrata.
Nota: le risorse del VPC devono disporre di connettività Internet per connettersi alle API pubbliche.
Connettiti alle API pubbliche con nomi DNS privati disattivati
Per consentire il traffico in uscita verso le API pubbliche, utilizza gruppi di sicurezza per il VPC. Inoltre, modifica la policy delle risorse collegata all'API per consentire l'accesso dal VPC.
Se il VPC è autorizzato ad accedere alle REST API pubbliche, utilizza il comando execute-api predefinito per connetterti alle REST API pubbliche. In alternativa, puoi anche utilizzare il nome di dominio personalizzato. Per ulteriori informazioni, consulta Controlla e gestisci l'accesso a REST API in Gateway API.
Se disattivi i nomi DNS privati per l'endpoint VPC di interfaccia, l'URL di invocazione execute-api predefinito non si connette più alle REST API private.
Per invocare REST API private, intraprendi una delle seguenti azioni:
-
Utilizza le intestazioni host con l'endpoint Amazon VPC come DNS, come nell'esempio seguente:
curl -H "Host: {your-api-id}.execute-api.{region}.amazonaws.com" \ https://Amazon VPC endpoint-xxxxx-xxxxx.execute-api.{region}.Amazon VPC endpoint.amazonaws.com/stage/path -
Crea una zona ospitata privata per execute-api.{region}.amazonaws.com. Nella zona ospitata privata, aggiungi un record A per l'identificatore dell'API. Punta il record A verso gli indirizzi IP dell'endpoint VPC di interfaccia in modo da poter utilizzare l'URL di invocazione execute-api predefinito della REST API privata.
Modifica gli attributi DNS privati per un endpoint VPC di interfaccia
Puoi modificare gli attributi DNS privati per un endpoint di interfaccia. Le modifiche influiscono sul modo in cui l'URL di una fase API viene risolto nell'indirizzo IP privato dell'endpoint VPC di interfaccia. Inoltre, le modifiche influiscono sul modo in cui puoi connetterti alle API private e pubbliche da un VPC. Per ulteriori informazioni, consulta Attributi DNS per il VPC.
Informazioni correlate
Accedere a un servizio AWS utilizzando un endpoint VPC di interfaccia
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa