Вчера в блоге AWS появилась преинтереснейшая новость: AWS CloudFormation обзавёлся поддержкой изменений в стеке, выполеннных вручную.
Очень частовстречающая проблема при использовании CloudFormation заключается в том, что он не обращает внимание на внесённые изменения, которые не были добавлены в шаблон. В результате – это иногда приводило к проблемам при апдейте стека.
Теперь появилась возможность перед апдейтом проверить текущее состояние инфраструктуры, и сравнить его с шаблоном CF, из которого был создан стек.
Документация – тут>>>.
Работает он аналогично Change Set-ам – в меню Actions выбирается новая опция Drift, CF создаёт “снимок” текущего состояния, и сранивает с шаблоном, из которог остек был создан.
Пример:
В Details есть список ресурсов с изменениями:
Теперь можно добавить изменения в шаблон или внести изменения в ресурс вручную и вернуть его в исходное состояние перед выполнением обновления.
Осталось только выяснить почему у некоторых стеков при повторном запуске Drift появляется ошибка “DETECTION_FAILED” (первая проверка прошла нормально), при чём при перезапуске – список “failed” ресурсов отличается. Учитывая, что функционал только ввели – может просто какие-то баги у AWS.
В любом случае – крайне полезная возможность.
Ещё пришла в голову мысль, что можно автоматизировать такие проверки, и делать алерты на изменения. CloudTrail вещь хорошая, но использование Drift – тоже вариант.