Estoy buscando una manera de hacer implementaciones azules / verdes con CloudFront .
¿Alguien tiene una buena solución para pasar de una distribución de CloudFront a otra o todos realmente crean su distribución y nunca la vuelven a tocar?
La distribución de My CloudFront consta de un origen S3 para contenido estático (javascript, etc.) y un origen personalizado que apunta a un AWS ELB.
Sin cambios en CloudFront
En circunstancias normales, no realizamos ningún cambio en nuestra distribución de CloudFront. Versionamos nuestro contenido estático en el origen S3 cambiando el nombre de los archivos de contenido estático en S3 y realizamos implementaciones sucesivas en instancias EC2 bajo Elastic Load Balancer (ELB). Sin embargo, hay momentos en los que necesitamos probar y realizar cambios en la distribución de CloudFront en sí o tener cambios lo suficientemente significativos en nuestro entorno que necesitamos apuntar a un nuevo ELB en un nuevo entorno.
Dos distribuciones CloudFront
La primera opción que intenté fue tener dos Distribuciones Web CloudFront separadas , una para mi entorno actual o A y otra para mi entorno nuevo o B. Intenté usar una política de enrutamiento ponderado de Route53 donde agregué dos registros para mi registro de www.domain.com Route53, uno apuntando a CloudFront Distribution A con un peso de 1 y el otro apuntando a CloudFront Distribution B con un peso de 0. El el plan sería cambiar los pesos cuando quiero pasar de la distribución A a la distribución B. Sin embargo, solo una distribución de CloudFront a la vez puede tener registrados los Nombres de Dominio Alternos (CNAME) de www.dominio.com o aparece el siguiente error:
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)
One CloudFront Distribution
La segunda opción es mantener una distribución web de CloudFront. Tengo S3 y orígenes personalizados que apuntan a mis entornos A y B y luego actualizo el comportamiento de caché de CloudFront para señalar el otro origen cuando quiero moverme de un entorno a otro. Esto es extremadamente complicado porque estas actualizaciones demoran entre 15 y 60 minutos, no hay visibilidad del progreso de la actualización y, dependiendo de la naturaleza de su cambio, es posible que deba continuar con una invalidación de CloudFront para que no esté sirviendo contenido en caché del antiguo entorno junto con nuevos contenidos.
¡Gracias por su consejo!