7

Ich versuche, ein Amazon API Gateway vor einen Application Load Balancer zu stellen, der den Datenverkehr mit meinem ECS Cluster ausgleicht, wo alle meine Microservices bereitgestellt werden. Die Motivation zur Verwendung des API-Gateways besteht in der Verwendung eines benutzerdefinierten Authorizers über eine Lambda-Funktion.Amazon API Gateway vor ELB und ECS Cluster

Anlagenschema

enter image description here

In Amazon Worten (https://aws.amazon.com/api-gateway/faqs/): "Proxy-Anfragen an Backend-Operationen müssen auch öffentlich im Internet zugänglich sein". Dies zwingt mich, die ELB öffentlich (Internet-orientiert) statt intern zu machen. Dann muss ich einen Weg, um sicherzustellen, dass nur der API-Gateway ist in der Lage, auf die ELB außerhalb der VPC zugreifen.

Meine erste Idee war, ein Client-Zertifikat in der API Gatway zu verwenden, aber die ELB scheint es nicht zu unterstützen.

Alle Ideen würden sehr geschätzt werden!

+2

Ich glaube nicht, dass es eine einfache Lösung ist. Entweder ist API Gateway nicht für Sie oder Sie müssen ein bisschen mehr tun. Die Lösung besteht darin, HAProxy vor den ALB zu setzen, der das Client-Zertifikat verifiziert. Oder lege einen Lambda vor den ALB, aber das erfordert, dass die gesamte Antwort gepuffert wird, was möglicherweise die Dinge verlangsamt. Oder wenn Sie dann einen geheimen Header zu der Anfrage von API Gateway zum ALB hinzufügen können. Dieses Geheimnis wird dann in den Backends verifiziert. Ich würde IP-Whitelisting nicht empfehlen, da die IP-Bereiche für das API-Gateway nicht statisch sind und eine Unterbrechung ändern können. – doorstuck

+0

Danke @doorstuck. Ich möchte vermeiden, neue Komponenten wie die HAProxy zu integrieren. Ich denke, dass dieses Szenario (API Gateway, ELB, ECS Cluster) ziemlich häufig ist. Bietet AWS keine Out-of-the-Box-Lösung dafür? –

+0

API Gateway ist stärker auf Lambda-Funktionsdienste zugeschnitten. Wenn ich sie mit gehosteten Diensten vor Docker-Containern positioniere, habe ich das Gefühl, dass sie zu viel Latenz und Komplexität hinzufügt. Ich benutze einen anderen Proxy anstelle von API Gateway, da ich sowieso nur den Proxy-Teil von API Gateway verwende. Ich habe Skipper von Zalando erfolgreich eingesetzt. Aber wenn Sie Autorisierer, Cloudfront-Caching usw. verwenden möchten, dann ist vielleicht API Gateway immer noch der Weg zu gehen. – doorstuck

Antwort

1

Momentan gibt es kein API-Gateway vor privaten ELB, also haben Sie recht, dass es sich um das Internet handeln muss. Die beste Problemumgehung für Ihren Fall, die ich mir vorstellen kann, wäre, ELB in den TCP Pass-Through-Modus zu versetzen und das Client-Zertifikat auf Ihren End-Hosts hinter dem ELB zu beenden.

4

Dies scheint ein großes fehlendes Stück für die API-Gateway-Technologie, angesichts der Art und Weise, wie es geschoben wird. Das Nichtanrufen eines internen Servers in der VPC schränkt seine Nützlichkeit als Authentifizierungsfront für den Internetzugang stark ein. FWIW, in Azure unterstützt die API-Verwaltung diese Funktion - sie kann Anfragen aus dem Internet annehmen und direkt in Ihr virtuelles Netzwerk anrufen, das ansonsten von der Firewall ausgespielt wird. Der einzige Weg, wie dies unter AWS möglich erscheint, ist die Verwendung von Lambdas, was eine signifikante Ebene der Komplexität hinzufügt, insbes. wenn Sie verschiedene Binärprotokolle unterstützen müssen.

2
+1

BTW Ich habe es schließlich versucht, und es funktioniert, aber es ist kaum super bequem - für den Anfang können Sie nur ein API-Gateway mit einem Netzwerk-Load-Balancer, anstatt eine Anwendung Load Balancer, also wenn Sie derzeit externe ALBs Richten Sie das Gateway so ein, dass Sie es entweder durch Netzwerklastenausgleiche ersetzen müssen (was bedeutet, dass Sie Ihre SSL-Beendigung verlieren, und verschiedene andere Optionen, die Sie möglicherweise verwenden), oder fügen Sie einen NLB vor den ALBs hinzu. das kann jetzt nur intern sein. Auch das Ändern einer bestehenden Route von "HTTP" zu "VPC-Link" ist nicht vollständig nahtlos. –

+1

Gibt es Ratschläge zum Einrichten eines NLB vor einem ALB? –

Verwandte Themen