Ich suche nach einer Möglichkeit, Blue / Green-Bereitstellungen mit CloudFront durchzuführen .
Hat jemand eine gute Lösung für den Wechsel von einer CloudFront-Distribution zu einer anderen oder erstellt wirklich jeder nur seine Distribution und berührt sie dann nie wieder?
Meine CloudFront-Distribution besteht aus einem S3- Ursprung für statischen Inhalt (Javascript usw.) und einem benutzerdefinierten Ursprung, der auf eine AWS-ELB verweist.
Keine Änderungen an CloudFront
Unter normalen Umständen nehmen wir keinerlei Änderungen an unserer CloudFront-Distribution vor. Wir versionieren unseren statischen Inhalt im S3-Ursprung, indem wir den Namen der statischen Inhaltsdateien in S3 ändern und unter dem Elastic Load Balancer (ELB) Rolling-Bereitstellungen für EC2-Instanzen durchführen. Es gibt jedoch Situationen, in denen wir die CloudFront-Distribution selbst testen und ändern müssen oder die Umgebung so stark ändern müssen, dass wir auf eine neue ELB in einer neuen Umgebung verweisen müssen.
Zwei CloudFront-Distributionen
Die erste Option , die ich versuchte , war zwei separate Cloudfront haben Web Distributionen , einen für meine aktuellen oder A, Umwelt und eine für meinen neuen oder B, Umwelt. Ich habe versucht, eine Route53- gewichtete Routing-Richtlinie zu verwenden, bei der ich zwei Datensätze für meinen www.domain.com-Route53-Datensatz hinzugefügt habe, von denen einer auf CloudFront Distribution A mit einer Gewichtung von 1 und der andere auf CloudFront Distribution B mit einer Gewichtung von 0 zeigt Es ist geplant, die Gewichtung zu ändern, wenn ich von Verteilung A zu Verteilung B wechseln möchte. Es kann jedoch immer nur für eine CloudFront-Verteilung der alternative Domain-Name (CNAME) von www.domain.com registriert werden, oder es wird der folgende Fehler angezeigt :
com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException: One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: ef84a5f0-44e7-11e5-9315-0ba167bb108a)
Eine CloudFront-Distribution
Die zweite Option besteht darin, eine CloudFront-Webdistribution beizubehalten. Ich habe S3 und benutzerdefinierte Ursprünge, die auf meine A- und B-Umgebungen verweisen, und aktualisiere dann das CloudFront- Cache-Verhalten , um auf den anderen Ursprung zu verweisen, wenn ich von einer Umgebung in eine andere wechseln möchte. Dies ist äußerst umständlich, da diese Aktualisierungen 15 bis 60 Minuten dauern. Der Fortschritt der Aktualisierung wird nicht angezeigt. Abhängig von der Art Ihrer Änderung müssen Sie möglicherweise eine CloudFront-Invalidierung durchführen, damit Sie keine zwischengespeicherten Inhalte bereitstellen aus der alten Umgebung zusammen mit neuen Inhalten.
Danke für deinen Rat!