AWS – URL dem API-Backend zuordnen (ähnlich wie Apache ProxyPass)

AWS – URL dem API-Backend zuordnen (ähnlich wie Apache ProxyPass)

Ich habe eine Webarchitektur, die Apache als Frontend und Node.js als Backend verwendet. Ich möchte diese Architektur zu AWS migrieren. Node.js wird ein Elastic Beanstalk sein und Apache wird auf Amazon S3 gespeichert (es speichert nur statische Dateien).

Ich verwende diese Anweisungen, um den /API-URL-Pfad dem Back-End in Apache zuzuordnen:

<Location /api>
    ProxyPass http://localhost:8081/api
</Location>

Ich möchte denselben Mechanismus in AWS verwenden. Ich habe herausgefunden, dass Amazon S3 dazu nicht in der Lage ist, da es nur ein Speicherdienst ist.

Ich habe herausgefunden, dass Amazon CloudFrontich mehrere Ursprünge verwenden kann , die Buckets oder Amazon CloudFrontsein können . Dann würde ich einen verwenden, um mein Node.js-Anwendungs-Backend mit einem zu hostenAmazon S3Amazon Elastic Load BalancersAmazon EC2Amazon Load Balancer

Die endgültige Architektur wäre dann

                        - Amazon Elastic Load Balancer -> Amazon EC2
                 /api  /
                      /
-->Amazon CloudFront-<
                      \
                 else  \
                        - Amazon S3

Ist diese Art von Architektur möglich? Wenn ja, ist dies der beste Weg, diese Art von Architektur in AWS zu erreichen?

Vielen Dank an alle für Ihre Antworten!

Antwort1

Ja ... verwenden Sie CloudFront.

Sein offizieller Zweck besteht natürlich in der Funktion als Caching-CDN, es verfügt jedoch über die integrierte Fähigkeit, Anfragen je nach Pfad selektiv an das entsprechende Ursprungssystem weiterzuleiten.

Sie würden also Ihren Standardpfad auf S3 konfigurieren und Anfragen würden an Ihren Bucket gesendet. Konfigurieren Sie einen zweiten Ursprung, der auf den Elastic Load Balancer vor Ihrer Elastic Beanstalk-Bereitstellung verweist. Legen Sie ein Pfadmuster fest, um /api/*Anfragen an diesen zweiten Ursprung weiterzuleiten.

Das Caching-Verhalten kann deaktiviert werden, wenn es nicht benötigt oder gewünscht wird.

Eine CloudFront-Bereitstellung wird als „Verteilung“ bezeichnet.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web.html

Ist dies der „beste“ Ansatz? Das hängt von Ihrem Fachwissen und Ihrer Kreativität ab … aber wenn Sie die verfügbaren AWS-Komponenten verwenden möchten, dann ist dies wahrscheinlich der richtige Weg. Es ist die einzige Komponente, die im Wesentlichen wartungsfreies Routing von Anfragen per Pfad über HTTP ermöglicht. (Amazon API Gateway routet natürlich auch über Pfade, ist aber für diese Anwendung mit S3 als „Platzhalter“-Ziel nicht geeignet.)

verwandte Informationen