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