0

Ich habe eine Lambda-Funktion in allen AWS-Regionen. Ich habe Kunden auf der ganzen Welt, die einen POST-Anruf an meine Basis-Domain example.com machen. Es liegt in der Verantwortung meines Lastenverteilers, sicherzustellen, dass die Anforderungen an das API-Gateway der Region weitergeleitet werden, die dem Client am nächsten ist, um die Latenz zu minimieren.Routing zum API-Gateway mit AWS Route 53

So weit habe ich die folgende Konfiguration:

  • Lambda-Funktionen in jeder Region eingesetzt
  • Benutzerdefinierte Domain-Name für jede des API-Gateways, die eine Cloudfront Domain-Namen macht. Zum Beispiel hat N.California Region benutzerdefinierten Domänennamen us-west-1.example.com konfiguriert und eine Zuordnung des Pfades, der mein Lambda aufruft. Die CloudFront-URL für dieses API-Gateway ist d12345123.cloudfront.net
  • Ein RecordSet vom Typ A in der gehosteten Route53-Zone für us-west-1.example.com, das ein Alias ​​von d12345123.cloufront.net ist. Wenn ich einen POST-Anruf an us-west-1.example.com/1.0/localdb mache, gibt es mir die korrekte Ausgabe zurück.
  • Eine Verkehrsrichtlinie in Route53 und ein Richtliniensatz für default.example.com vom Typ A, dem eine Georeichungsregel zugewiesen ist, die den Datenverkehr an die CloudFront-Instanz umleitet (dieselbe Instanz, die nach dem Hinzufügen der benutzerdefinierten Domäne verfügbar gemacht wird) Name in dieser Region) der Region. Dies erzeugt einen Eintrag für default.example.com in der gehosteten Zone des Typs A
  • A RecordSet vom Typ A im Route53 gehosteten Zone für example.com die ein Alias ​​für default.example.com ist, so dass der Verkehr, der zu example.com kommt, kann zu default.example.com
  • geroutet

nach diesen Konfigurationen, wenn ich einen Anruf zu example.com machen, erhalte ich eine 403 Antwort von Cloudfront, es einen Bad Request

Dank Aufruf

+0

Mögliches Duplikat von [DNS-basierte URL-Weiterleitung in Amazon Route53 einrichten] (https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53) – vascop

+1

Sie finden eine Lücke zwischen dem, was Sie bisher erreicht haben, und dem, was Sie bisher erreicht haben. Dein 'default.example.com' wird nicht das tun, was du erwartest. Es hilft also nicht, deine Fragen zu beantworten. Das Aufrufen von Lambda-Funktionen bedeutet in der Regel die Verwendung von API Gateway, und es reicht nicht aus, unterschiedliche CNAME-Datensätze auf unterschiedliche API Gateway-Implementierungen in verschiedenen Regionen zu verweisen. Für einen bestimmten Hostnamen können Sie API Gateway nur so konfigurieren, dass dieser Hostname in * one * -Region erwartet wird. Bitte geben Sie weitere Details darüber an, was Sie tatsächlich erreichen möchten und welche spezifische Konfiguration Sie haben. –

+1

Wenn ein Browser eine HTTP-Anfrage erstellt, setzt er den Host-Header auf den Hostnamen in der URL in der Adressleiste. Unabhängig von den dazwischen liegenden DNS-Auflösungsschritten ist der * ursprüngliche * Hostname das, was das Ziel sieht. Das ist das grundlegende Problem, dem Sie gegenüberstehen. Derzeit gibt es keine native, verwaltete und serverlose AWS-Lösung hierfür. Es erfordert regionale Proxy-Server, um diese Host-Header neu zu schreiben oder an die regionalen Hostnamen umzuleiten, oder ... wenn Ihre APIs immer <3 Sekunden für die Verarbeitung von Anfragen benötigen, dann gibt es eine mögliche Lösung in Lambda @ Edge. –

Antwort

0

Ab November 2017 "Amazon-API-Gateway unterstützt regionale API Endpunkte"

https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-api-gateway-supports-regional-api-endpoints/

Sie jetzt aus zwei Arten von API-Endpunkten können wählen, wenn REST-APIs und benutzerdefinierte Domänen mit Amazon API-Gateway zu erstellen. Ein regionaler API-Endpunkt ist ein neuer Endpunkttyp, auf den von derselben AWS-Region aus zugegriffen wird, in der Ihre REST-API implementiert ist. Dadurch können Sie die Latenz von Anforderungen reduzieren, wenn API-Anforderungen aus derselben Region stammen wie Ihre REST-API. Außerdem können Sie jetzt Ihre eigene Amazon CloudFront-Verteilung mit dem regionalen API-Endpunkt verknüpfen. Die zweite Art von API-Endpunkt ist die kantenoptimierte API. Edge-optimierte APIs sind Endpunkte, auf die über eine CloudFront-Verteilung zugegriffen wird, die von API Gateway erstellt und verwaltet wird. Bisher waren kantenoptimierte APIs die Standardoption zum Erstellen von APIs mit API Gateway.

Erstellen Sie zunächst eine neue REST-API mithilfe der Amazon API Gateway-Konsole, AWS CLI oder AWS SDKs und APIs. Sie können auch vorhandene REST-APIs und benutzerdefinierte Domänen zu einem regionalen API-Endpunkt migrieren. Besuchen Sie unsere Dokumentation, um mehr über diese Funktion zu erfahren.

Diese Funktion ist jetzt in US-Ost (N. Virginia), US-Ost (Ohio), US-West (Oregon), US-West (N.Kalifornien), Kanada (Zentral), Südamerika (São Paulo), EU (Irland), EU (Frankfurt), EU (London), Asien-Pazifik (Singapur), Asien-Pazifik (Tokio), Asien-Pazifik (Sydney), Asien-Pazifik (Seoul) und asiatisch-pazifische (Mumbai) AWS-Regionen. Weitere Informationen zu Amazon API Gateway finden Sie auf unserer Produktseite.

Verwandte Themen