Sto cercando un modo per eseguire distribuzioni Blue / Green con CloudFront .
Qualcuno ha una buona soluzione per passare da una distribuzione CloudFront a un'altra o tutti semplicemente creano la propria distribuzione e non la toccano mai più?
La mia distribuzione CloudFront è composta da un'origine S3 per contenuto statico (javascript, ecc.) E un'origine personalizzata che punta a un ELB AWS.
Nessuna modifica a CloudFront
In circostanze normali non apportiamo alcuna modifica alla nostra distribuzione CloudFront. Eseguiamo la versione del nostro contenuto statico nell'origine S3 modificando il nome dei file di contenuto statico in S3 e eseguendo il roll-down delle distribuzioni nelle istanze EC2 con Elastic Load Balancer (ELB). Tuttavia, ci sono momenti in cui è necessario testare e apportare modifiche alla distribuzione CloudFront stessa o apportare modifiche abbastanza significative al nostro ambiente da dover puntare a un nuovo ELB in un nuovo ambiente.
Due distribuzioni CloudFront
La prima opzione che ho provato è stata quella di avere due distribuzioni Web CloudFront separate , una per il mio ambiente attuale o A e una per il mio nuovo ambiente o B. Ho tentato di utilizzare una politica di routing ponderata Route53 in cui ho aggiunto due record per il mio record Route53 www.domain.com, uno che punta a CloudFront Distribution A con un peso di 1 e l'altro che punta a CloudFront Distribution B con un peso di 0. Il piano sarebbe quello di cambiare i pesi quando voglio passare dalla distribuzione A alla distribuzione B. Tuttavia, solo una distribuzione CloudFront alla volta può avere i nomi di dominio alternativi (CNAME) www.domain.com registrati o si ottiene il seguente errore:
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)
Una distribuzione CloudFront
La seconda opzione è quella di mantenere una distribuzione web CloudFront. Ho origini S3 e personalizzate che puntano ad entrambi i miei ambienti A e B e quindi aggiorno il comportamento della cache di CloudFront per puntare all'altra origine quando voglio spostarmi da un ambiente all'altro. Questo è estremamente disordinato perché questi aggiornamenti impiegano 15-60 minuti, non c'è visibilità sullo stato di avanzamento dell'aggiornamento e, a seconda della natura della modifica, potrebbe essere necessario seguirlo con un Invalidation CloudFront in modo da non pubblicare contenuti nella cache dal vecchio ambiente insieme a nuovi contenuti.
Grazie per il tuo consiglio!