如何 运行 在 CDK 管道内迁移数据库
How to run database migrations within a CDK Pipeline
在 CDK 管道中 运行 宁数据库迁移是否有好的模式?
通常(没有 CDK 管道)我会使用部署脚本实现此目的:
- 部署数据库堆栈
- 等待数据库堆栈完成
- 运行s 数据库迁移
- 部署API堆栈
有什么方法可以在 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 事件或者在删除时做一些数据备份。请记住,事件是针对自定义资源的,不一定是数据库(即使它们可能重合)。
在 CDK 管道中 运行 宁数据库迁移是否有好的模式?
通常(没有 CDK 管道)我会使用部署脚本实现此目的:
- 部署数据库堆栈
- 等待数据库堆栈完成
- 运行s 数据库迁移
- 部署API堆栈
有什么方法可以在 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 事件或者在删除时做一些数据备份。请记住,事件是针对自定义资源的,不一定是数据库(即使它们可能重合)。