Нет никаких ресурсов CloudFormation, которые касаются «внутренних компонентов» экземпляра RDS после того, как он был создан;это черный ящик, который вы должны настроить (с пользователями, таблицами и данными) вне CloudFormation.Это немного грустно, поскольку управление версиями, управление и развертывание схем баз данных - это классическая проблема развертывания на границе между инфраструктурой и приложением, в которой также находится CloudFormation (как инструмент управления версиями, управления и развертывания другой инфраструктуры).
Что вы можете сделать, хотя это и не функция начального уровня, - это использовать пользовательский ресурс для подключения к экземпляру RDS после его создания и запуска соответствующих команд SQL для создания пользователей и таблиц.,Вы определяете схему в своем шаблоне CloudFormation (либо в виде SQL, либо в виде более структурированного описания, похожего на DynamoDB AtributeDefinitions
), и эта схема передается в функцию лямбды пользовательских ресурсов, которая затем выполняет запросы вбаза данных.
Если вы пойдете по этому пути, вы, вероятно, будете много изобретать, как переводить различия в схемах «до» и «после» в ALTER TABLE
операторы SQL, которые можно запускать вбаза данных.Ваш лямбда-код настраиваемого ресурса должен быть очень надежным и всегда отправлять ответ обратно в CloudFormation, даже в случае ошибки.И не забывайте, что если обновление стека по какой-либо причине завершится неудачно, CloudFormation снова вызовет ваш пользовательский ресурс «в обратном порядке» (т.е. попросит вас изменить базу данных из схемы после обновления обратно в схему до обновления) как частьпроцесса отката.
Если вы пойдете по этому пути и придумали что-то надежное, опубликуйте это, потому что я уверен, что многие люди будут заинтересованы в этом!У меня был быстрый взгляд онлайн, но я не мог найти ничего очевидного ранее существовавшего.