1

我试图使用sequelize js与无服务器,来自传统的服务器背景,我很困惑在哪里/如何运行数据库迁移。如何/在无服务器项目中运行sequelize迁移的位置?

我应该创建一个运行迁移的专用函数还是有任何其他方式来运行迁移?

+0

你曾经为此工作过吗? –

+0

是的,正如答案中所述,我认为最好的策略是将迁移与lambda函数分开。我从可以直接访问数据库的环境运行迁移。希望这可以帮助。 –

+1

你可能想要尝试https://github.com/Reckon-Limited/transmogrify/ –

回答

2

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

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

在这种情况下,我会使用命令行工具来连接这个数据库并执行相应的任务。您也可以为此运行Node.js脚本,但创建一个Lambda来执行该脚本,稍后删除此Lambda听起来很奇怪,只有在您没有直接访问此数据库的情况下才应该使用它。

+2

我想创建一个lambda函数的原因是该数据库和所有的功能都在vpc上运行,我wouldn没有直接从我的本地机器访问,但我想这是一个更好的主意,从一台机器,在同一个vpc进行迁移。 –

+0

我不同意这个答案。这个问题需要一个'sequelize'特定的答案,所以这将是可重复的代码,因为'sequelize'支持'db:migrate'命令,你可以在每次部署时触发它。从安全角度来看,我不希望每个部署者都有权访问生产数据库。此外,我不希望从我的部署策略中断开正在运行的迁移。 –

+0

@JaapHaagmans在部署时触发迁移是一个好主意,但问题是用户在部署时可能没有直接访问数据库的权限,用户可能必须在部署之前连接到运行数据库的网络。 –

相关问题