2016-04-07 16 views
5

Sto creando un API utilizzando API Gateway e Lambda. Utilizzando l'URL designato nell'editor Stage Gateway API, tutto funziona correttamente; tuttavia, quando provo a passare a un dominio personalizzato, sto riscontrando alcuni problemi.Dominio personalizzato per gateway API restituito 403

La prima cosa che ho provato era usare un record CNAME in Route 53 direttamente dal mio dominio nel dominio che ho ricevuto dal gateway API. Ciò stava restituendo alcuni errori e penso che sia la soluzione sbagliata sia corretta?

Successivamente ho provato la funzione nomi dominio personalizzati nel gateway API. La mia comprensione è che si arriverà su una distribuzione CloudFront che posso quindi mappare da Route 53. Quando ho creato il dominio personalizzato e aggiunto un Domain Mapping, mi viene fornito un URL per quello che presumo sia una distribuzione di CloudFront. Il link restituisce una risposta 403 e nessuna distribuzione è stata effettuata in CloudFront. Qual è un buon modo per eseguire il debug di questo problema?

+2

Si ha sempre una distribuzione CloudFront quando si utilizza API Gateway, non solo quando si abilitano gli URL personalizzati. Non lo vedrai nella dashboard di CloudFront perché è gestito dietro le quinte e non hai accesso diretto ad esso. –

+0

Ok, questo ha senso. Questo e il fatto che non stavo aspettando abbastanza a lungo da far passare CloudFront erano i problemi. Sono venuto stamattina e funzionava. – Banner

risposta

7

Questa è la guida per sviluppatori se non l'hai già vista. http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

Tutto ciò che dovete fare è impostare un CNAME con il vostro provider DNS che punta alla distribuzione CF che Gateway API vi offre. Non sarai in grado di effettuare chiamate API direttamente alla distribuzione CF. Il gateway API esegue il mapping dell'API/fase dalla mappatura del percorso di base impostata nel gateway API in modo che solo le chiamate API indirizzate al nome dominio funzionino correttamente.

0

problema correlate:

esattamente al di sotto di risposta:

{"message":"Forbidden"} 

browser

F12 > Network > (select error line) > Response (on right side) 

potrebbe significare
che, qualcosa non va, nel percorso URL

3

È è necessario utilizzare l'intestazione host nella richiesta. L'host dovrebbe essere il tuo dominio personalizzato.

curl https://<cf-id>.cloudfront.net/myapi -H "Host: api.myapi.com" 
+0

l'aggiunta dell'intestazione Host era il pezzo mancante per me. Ho una chiave API richiesta per l'APIG e stavo già fornendo l'intestazione personalizzata della chiave x-api, ma senza l'intestazione Host, la richiesta era sempre proibita quando si utilizza il cloudfront –

+0

Questa è la vera risposta! –

1

Nel mio caso ho dovuto aggiungere la mappatura percorso di base.