Как запускать миграции баз данных в конвейере CDK

#aws-cdk

#aws-cdk

Вопрос:

Существует ли хороший шаблон для выполнения миграции базы данных в конвейере CDK?

Обычно (без конвейера CDK) Я бы добился этого с помощью сценария развертывания, который:

  • развертывает стек базы данных
  • ожидает завершения стека базы данных
  • запускает миграции БД
  • развертывает стек API

Есть ли какой-либо способ сделать это в приложении конвейера CDK (запускать миграции после развертывания стека базы данных, но до развертывания стека API)?

 export class MyStage extends Stage {  
  constructor(scope: Construct, id: string, props?: StageProps) {
    super(scope, id, props);
    const dbStack = new DatabaseStack(this, 'Database');
    const apiStack = new ApiStack(this, 'Api', {
        dbUrl: dbStack.dbUrl
    });    
  }
}
  

Ответ №1:

Подобные вещи я бы добавил в пользовательский ресурс: https://docs.aws.amazon.com/cdk/api/latest/docs/custom-resources-readme.html

По сути, вы пишете лямбда-выражение, которое будет обрабатывать событие CREATE и принимает базу данных как свойство. Тогда у него будет код, который обычно является вашим сценарием миграции. Вы можете просто игнорировать события обновления / удаления или, возможно, выполнить резервное копирование данных при удалении. Просто помните, что события относятся к пользовательскому ресурсу, а не обязательно к базе данных (даже если они могут совпадать).