AWS CloudFormation - создавать таблицы после того, как экземпляр RDS готов? - PullRequest
0 голосов
/ 21 сентября 2018

CloudFormation любительская здесь.Я смотрю в Интернете и не могу найти никаких ссылок на то, как бы я занялся созданием своих таблиц после того, как мой экземпляр RDS поднялся через CloudFormation.Можно ли указать лямбда для запуска и создания всех таблиц, или, может быть, указать файл SQL, который будет применяться?Какой стандартный шаблон на этом?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

К сожалению, шаблон CF не может запустить скрипт установки напрямую.Вы можете попробовать, подобно тому, что вы упомянули, использовать Lambda для запуска таблицы, настроенной после успешного создания RDS шаблоном CF. Атрибут DependsOn помогает.Вы должны передать учетные данные в Lambda для доступа к RDS.

0 голосов
/ 23 сентября 2018

Нет никаких ресурсов CloudFormation, которые касаются «внутренних компонентов» экземпляра RDS после того, как он был создан;это черный ящик, который вы должны настроить (с пользователями, таблицами и данными) вне CloudFormation.Это немного грустно, поскольку управление версиями, управление и развертывание схем баз данных - это классическая проблема развертывания на границе между инфраструктурой и приложением, в которой также находится CloudFormation (как инструмент управления версиями, управления и развертывания другой инфраструктуры).

Что вы можете сделать, хотя это и не функция начального уровня, - это использовать пользовательский ресурс для подключения к экземпляру RDS после его создания и запуска соответствующих команд SQL для создания пользователей и таблиц.,Вы определяете схему в своем шаблоне CloudFormation (либо в виде SQL, либо в виде более структурированного описания, похожего на DynamoDB AtributeDefinitions), и эта схема передается в функцию лямбды пользовательских ресурсов, которая затем выполняет запросы вбаза данных.

Если вы пойдете по этому пути, вы, вероятно, будете много изобретать, как переводить различия в схемах «до» и «после» в ALTER TABLE операторы SQL, которые можно запускать вбаза данных.Ваш лямбда-код настраиваемого ресурса должен быть очень надежным и всегда отправлять ответ обратно в CloudFormation, даже в случае ошибки.И не забывайте, что если обновление стека по какой-либо причине завершится неудачно, CloudFormation снова вызовет ваш пользовательский ресурс «в обратном порядке» (т.е. попросит вас изменить базу данных из схемы после обновления обратно в схему до обновления) как частьпроцесса отката.

Если вы пойдете по этому пути и придумали что-то надежное, опубликуйте это, потому что я уверен, что многие люди будут заинтересованы в этом!У меня был быстрый взгляд онлайн, но я не мог найти ничего очевидного ранее существовавшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...