Я ищу способ сделать Blue / Green развертывания с CloudFront .
У кого-нибудь есть хорошее решение для перехода с одного дистрибутива CloudFront на другой, или все действительно просто создают свой дистрибутив и никогда больше его не трогают?
Мое распределение CloudFront состоит из одного S3 происхождения для статического контента (JavaScript, и т.д.) и пользовательского происхождения указывает на AWS УДР.
Нет изменений в CloudFront
В обычных условиях мы не вносим никаких изменений в наш дистрибутив CloudFront. Мы создаем версии нашего статического содержимого в источнике S3, изменяя имя файлов статического содержимого в S3 и проводим развертывание в экземплярах EC2 в Elastic Load Balancer (ELB). Однако бывают случаи, когда нам нужно тестировать и вносить изменения в сам дистрибутив CloudFront или вносить достаточно существенные изменения в нашу среду, чтобы указывать на новый ELB в новой среде.
Два дистрибутива CloudFront
Первый вариант, который я попытался, состоял в том, чтобы иметь два отдельных веб-дистрибутива CloudFront , один для моей текущей среды или среды A, а другой для новой или среды B. Я попытался использовать политику взвешенной маршрутизации Route53, в которой я добавил две записи для моей записи Route53 на сайте www.domain.com, одну из которых указывает на CloudFront Distribution A с весом 1, а другую - на CloudFront Distribution B с весом 0. План состоит в том, чтобы изменить вес, когда я хочу перейти с дистрибутива A на дистрибутив B. Однако, только один дистрибутив CloudFront одновременно может зарегистрировать альтернативные доменные имена (CNAMEs) www.domain.com, или вы получите следующую ошибку:
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)
Один дистрибутив CloudFront
Второй вариант - сохранить один дистрибутив CloudFront. У меня есть S3 и пользовательские источники, указывающие на обе среды A и B, и затем я обновляю поведение CloudFront Cache, чтобы указывать на другое начало, когда я хочу перейти из одной среды в другую. Это очень грязно, потому что эти обновления занимают 15-60 минут, ход обновления не виден, и в зависимости от характера ваших изменений вам может потребоваться последующая проверка CloudFront Invalidation, чтобы вы не обслуживали кэшированный контент. из старой среды вместе с новым контентом.
Спасибо за ваш совет!