Как добавить функцию отката к базовому развертыванию S3 CodeBuild

Я следовал этой инструкции, чтобы получить очень простой рабочий процесс ci в aws. Работает без нареканий, но хочется иметь дополнительный функционал, откат. Во-первых, хотя это будет работать «из коробки», но не в моем случае, если я выберу предыдущее задание в CodeBuild, к которому я хочу вернуться, и нажму «Повторить попытку», я получаю это сообщение об ошибке: «Ошибка ArtifactsOverride должен быть установлен при использовании артефактов типа CodePipelines". Я также попытался снова запустить весь конвейер со страницей истории конвейера, но это просто список сборок без какой-либо функциональности.

Мои вопросы: как добавить функцию отката в мой рабочий процесс. Это не обязательно должно быть в том же конвейере и т. д. Но это не должно касаться git.


person antpaw    schedule 03.09.2017    source источник


Ответы (1)


AWS CloudFormation теперь поддерживает откат на основе сигнала тревоги CloudWatch.

Я бы поместил дистрибутив CloudFront перед вашей корзиной S3, указав исходный путь к папке в этой корзине. Каждый раз, когда вы выполняете развертывание на S3 из CodeBuild, вы выполняете развертывание в случайную новую папку S3.

Затем вы передаете имя папки в файле JSON в качестве выходного артефакта из шага CodeBuild. Вы можете использовать этот артефакт как в шаблон CloudFormation, обновленный действием CloudFormation в вашем конвейере.

Шаблон CloudFormation будет обновлять OriginPath дистрибутива CloudFront в папку, содержащую ваше новое развертывание.

Если сработает сигнал тревоги, шаблон CloudFormation откатится и вернется к старой папке.

У этого подхода есть несколько преимуществ:

  • Клиенты должны видеть либо новую, либо старую версию только во время развертывания, а не потенциально смешанные файлы во время выполнения развертывания.
  • Логика развертывания проще, поскольку вы каждый раз загружаете новый набор файлов, а не выясняете, какие файлы являются новыми, а какие необходимо удалить.
  • Откат выполняется довольно просто, потому что вы возвращаетесь к файлам, которые все еще существуют, а не повторно развертываете старые файлы.

Ваш конвейер должен содержать как CodeBuild, так и последовательное действие CloudFormation.

person TimB    schedule 05.09.2017
comment
Спасибо, а можно ли сделать откат с пайплайн юи? Или мне нужно вручную определить имя случайной папки и установить его в CloudFormation? - person antpaw; 09.09.2017
comment
Чтобы вручную вызвать откат, вы можете отменить обновление стека. В RollbackConfiguration вашего стека CloudFormation есть опция, как долго ждать. В идеале ваши сигналы тревоги CloudWatch должны охватывать все ваши критерии отката, поэтому откаты должны быть автоматическими, а не ручными. docs.aws.amazon.com /AWSCloudFormation/latest/UserGuide/ - person TimB; 11.09.2017