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
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!
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
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? –
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