.png)
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 CloudFront
ich mehrere Ursprünge verwenden kann , die Buckets oder Amazon CloudFront
sein können . Dann würde ich einen verwenden, um mein Node.js-Anwendungs-Backend mit einem zu hostenAmazon S3
Amazon Elastic Load Balancers
Amazon EC2
Amazon 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.)