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

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

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

1 ответ

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

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

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

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

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

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

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

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

Другие вопросы по тегам