如何 运行 在 CDK 管道内迁移数据库

How to run database migrations within a CDK Pipeline

在 CDK 管道中 运行 宁数据库迁移是否有好的模式?

通常(没有 CDK 管道)我会使用部署脚本实现此目的:

有什么方法可以在 CDK Pipeline 应用程序中执行此操作(运行 数据库堆栈部署之后但 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
    });    
  }
}

像这样的东西我会放在 CustomResource 中:https://docs.aws.amazon.com/cdk/api/latest/docs/custom-resources-readme.html

基本上,您编写一个 lambda 来处理 CREATE 事件并将数据库作为 属性。然后它将具有通常是您的迁移脚本的代码。您可以忽略 update/delete 事件或者在删除时做一些数据备份。请记住,事件是针对自定义资源的,不一定是数据库(即使它们可能重合)。