Я бы начал с простого и держал все внутри одного шаблона SAM, единого шлюза API и единого репозитория.При развертывании с помощью SAM / Cloudformation обновляются только измененные ресурсы, поэтому нет лишних затрат.
Так же проще построить свой конвейер CD.Вы можете добиться независимого развертывания модуля, только фиксируя и отправляя изменения этого модуля.
Как только (если) вы переросли модель инфраструктуры с одним шаблоном, не слишком сложно разделить ваши ресурсы на несколько шаблонов и перекрестноссылаться на общие ресурсы, используя функции Outputs
и !ImportValue
Cloudformation.Что может быть трудным, так это синхронизация зависимых развертываний (т. Е. Функция A в модуле 1 нуждается в функции B в модуле 2 для правильной работы и наоборот), но это проблема для другого дня.