Как я могу ускорить процесс отладки шаблона, или я застрял навсегда, замечая свои ошибки через полчаса после их совершения?
Вот несколько практических советов, специально посвященных повышению скорости итераций разработки сложных шаблонов CloudFormation:
Используйте инструменты CloudFormation для проверки шаблонов и обновлений стека
AWS уже изложил их в своем собственном документе Best Practices , поэтому я не буду их повторять:
Цель этого шага - выявить очевидные синтаксические или логические ошибки перед фактическим выполнением создания / обновления стека.
Тестовые ресурсы изолированно
Прежде чем использовать какой-либо отдельный ресурс CloudFormation в сложном стеке, убедитесь, что вы полностью понимаете всю степень поведения этого ресурса при создании / обновлении / удалении, включая любые ограничения на использование и типичное время запуска / отключения, путем тестирования их поведения в небольших автономных стеках. первый.
- Если вы разрабатываете или используете какие-либо сторонние пользовательские ресурсы, напишите модульные тесты с использованием соответствующих библиотек для языковой платформы, чтобы убедиться, что логика приложения работает должным образом во всех случаях использования.
- Имейте в виду, что время, необходимое для создания / обновления / удаления отдельного ресурса, может сильно различаться между типами ресурсов в зависимости от поведения базовых вызовов API. Например, для создания / обновления / удаления сложного
AWS::CloudFront::Distribution
ресурса может потребоваться 30-60 минут , в то время какAWS::EC2::SecurityGroup
обновления - за секунды.
- Отдельные ресурсы могут иметь ошибки / проблемы / ограничения в их реализации, которые намного проще отлаживать и разрабатывать обходные пути при тестировании изолированно, а не в рамках гораздо большего стека. Помните об ограничениях, например об ограничениях сервисов AWS в зависимости от индивидуальных настроек вашего аккаунта AWS или о доступности сервисов в регионе в зависимости от региона, в котором вы создаете свой стек.
Создавайте сложные стеки небольшими приращениями
При выполнении создания / обновления стека сбой любого отдельного ресурса приведет к тому, что стек откатит весь набор изменений ресурсов, что может без необходимости уничтожить другие успешно созданные ресурсы и занять очень много времени при создании сложного стека с длинным график зависимостей связанных ресурсов.
Решением является постепенное создание стека небольшими пакетами обновлений, добавление ресурсов по одному (или нескольким) за раз. Таким образом, если / когда происходит сбой при создании / обновлении ресурса, откат не приводит к уничтожению всех ресурсов вашего стека, а только набор ресурсов, измененный в последнем обновлении.
Следите за ходом обновления стека
Обязательно следите за ходом обновления стека , просматривая события стека, пока выполняется создание / обновление. Это будет отправной точкой для устранения дальнейших проблем с отдельными ресурсами.