在无服务器项目中如何/在何处运行迁移迁移?

Man*_*iya 6 migration sequelize.js serverless-framework sequelize-cli serverless-architecture

我试图将Sequelize js与Serverless结合使用,它来自传统的服务器背景,我对在何处/如何运行数据库迁移感到困惑。

是否应该为运行迁移创建专用功能,或者是否还有其他运行迁移的方法?

小智 5

几天前,我在构建一个无服务器项目时发现自己也遇到了同样的问题,因此我决定开发一个简单的无服务器插件来通过 CLI 管理续集迁移。

使用该插件您可以:

  • 创建迁移文件
  • 列出待处理和已执行的迁移
  • 应用待处理的迁移
  • 恢复已应用的迁移
  • 重置所有已应用的迁移

我知道这个问题是大约两年前发布的,但是对于那些不断来这里寻找答案的人来说,该插件可能会有所帮助。

代码和使用说明位于github 上的插件存储库npm 上的插件页面上

要通过 npm 直接在项目上安装插件,您可以运行:

npm install --save serverless-sequelize-migrations
Run Code Online (Sandbox Code Playgroud)


Zan*_*non 3

Lambda 函数被设计为可以在需要时运行。当您期望多次执行时,您可以部署它们。

为什么要为迁移任务创建 Lambda 函数?应用数据库迁移是一项维护任务,每个迁移 ID 只应执行一次。如果您不想多次执行相同的 SQL 脚本,我认为您应该避免为此目的创建 Lambda 函数。

在这种情况下,我将使用命令行工具连接该数据库并执行适当的任务。您还可以为此运行 Node.js 脚本,但创建 Lambda 来执行该脚本,然后删除此 Lambda 听起来很奇怪,只有在您无法直接访问此数据库时才应使用。

  • 我想为此创建一个 lambda 函数的原因是数据库和所有函数都在 vpc 上运行,我无法从本地计算机直接访问,但我想这样做会是一个更好的主意从同一 vpc 中的计算机进行迁移。 (3认同)
  • 我不同意这个答案。该问题要求特定于“sequelize”的答案,因此这将是可重复的代码,因为“sequelize”支持“db:migrate”命令,您可以在每次部署时触发该命令。从安全角度来看,我不希望每个部署人员都可以访问生产数据库。此外,我不想将正在运行的迁移与我的部署策略断开连接。 (3认同)