5

Ich erstelle eine API mit API Gateway und Lambda. Mit der im API-Gateway-Stage-Editor angegebenen URL funktioniert alles einwandfrei; Wenn ich jedoch versuche, in eine benutzerdefinierte Domäne zu wechseln, stoße ich auf einige Probleme.Benutzerdefinierte Domäne für API Gateway 403 zurück

Das erste, was ich ausprobiert habe, war die Verwendung eines CNAME-Datensatzes in Route 53 direkt von meiner Domäne auf die Domäne, die ich vom API-Gateway erhalten habe. Das brachte einige Fehler zurück und ich denke es ist die falsche Lösung, ist das richtig?

Als nächstes habe ich versucht, die benutzerdefinierte Domain-Namen-Funktion in API Gateway. Nach meinem Verständnis wird eine CloudFront-Distribution erstellt, die ich dann aus Route 53 zuordnen kann. Wenn ich die benutzerdefinierte Domäne erstellt und eine Domänenzuordnung hinzugefügt habe, wird mir eine URL zu einer CloudFront-Distribution zur Verfügung gestellt. Der Link gibt eine 403-Antwort zurück und in CloudFront wurde keine Verteilung vorgenommen. Was ist eine gute Möglichkeit, dieses Problem zu beheben?

+2

Sie haben immer eine CloudFront-Verteilung, wenn Sie API Gateway verwenden, nicht nur, wenn Sie benutzerdefinierte URLs aktivieren. Sie werden es nicht in Ihrem CloudFront-Dashboard sehen, da es hinter den Kulissen verwaltet wird und Sie keinen direkten Zugriff darauf haben. –

+0

Okay, das macht Sinn. Das und die Tatsache, dass ich nicht lange genug auf CloudFront wartete, waren die Probleme. Ich kam heute Morgen und es funktionierte. – Banner

Antwort

7

Hier ist der Entwicklerleitfaden, wenn Sie ihn nicht gesehen haben. http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

Alles, was Sie tun müssen, ist ein CNAME mit Ihrem DNS-Provider einzurichten, der auf die CF-Verteilung verweist, die Ihnen das API-Gateway bietet. Sie können keine API-Aufrufe direkt an die CF-Distribution senden. API-Gateway ordnet die API/Stufe der in API-Gateway eingerichteten Basispfadzuordnung zu, sodass nur API-Aufrufe, die an den Domänennamen gerichtet sind, ordnungsgemäß funktionieren.

0

Verwandte Ausgabe:

Genau unterhalb Antwort:

{"message":"Forbidden"} 

in Browser

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

könnte bedeuten,
, dass etwas nicht in Ordnung ist, in der URL-Weg

3

Sie Sie müssen den Host-Header in Ihrer Anfrage verwenden. Host sollte Ihre benutzerdefinierte Domäne sein.

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

Hinzufügen der Host-Header war das fehlende Stück für mich. Ich habe einen API-Schlüssel für die APIG benötigt, und bereits den X-API-Schlüssel benutzerdefinierte Header zur Verfügung gestellt, aber ohne den Host-Header, war die Anfrage immer verboten, wenn Sie Cloudfront –

+0

Dies ist die echte Antwort! –

1

In meinem Fall musste ich Base-Path-Mapping hinzufügen.

Verwandte Themen