1

我将我的全栈项目部署到 AWS ECS(Docker)。到目前为止一切正常。我的问题是我不知道如何将本地计算机连接到 RDS-DB 以迁移我的 DB-Schema。

我想运行命令:prisma migrate deploy --preview-feature--> 在数据库中创建表和字段

我的 RDS-DP 是私有的(不可公开访问),并且与我的前端和后端位于同一个 VPC 中。前端有一个公共安全组(Load-Balencer),后端有一个私有安全组,并且对数据库有权限(请求正在工作只是得到错误:“public.Game当前数据库中不存在该表”我可以解决与迁移)。目前只有我的后端可以访问 RDS。

我还尝试了一个公共的测试数据库(公共可访问性),并且我能够从我的本地机器迁移。

您如何在生产中一般迁移 Prisma 以及如何在没有公共可访问性的情况下将我的本地计算机权限授予 RDS ?

4

2 回答 2

1

如果您可以从使用 ECS 部署的容器之一运行该命令,并且您在 EC2 实例上部署了 ECS 任务,则您可以ssh进入实例和docker exec容器(与 RDS 数据库连接),据推测,您可以从中运行那个命令。请注意,您的实例本身可能无法从您的笔记本电脑公开访问和访问(在这种情况下,您需要有某种堡垒主机来执行此操作)。

如果您可以从使用 ECS 部署的容器之一运行该命令,并且您在 Fargate 上部署了 ECS 任务,这会有点棘手,因为没有可以通过 SSH 访问的 EC2 实例。在这种情况下,我猜您需要部署一个临时环境(在 EC2 或 ECS/EC2 上,这将允许运行该命令来准备数据库。

仅供参考,我们即将发布一项新功能,允许您exec进入容器(在 ECS/EC2 或 ECS/Fargate 上运行)而无需进行这些跳转(如果可能)。但此功能(尚)不可用。更多在这里

于 2021-03-07T09:59:59.527 回答
0

如果你让它在 ECS 中运行,创建另一个使用相同 Docker 映像的任务定义可能很简单,但会覆盖命令参数以运行 migrate 命令而不是正常命令来启动你的应用程序。另一种类似的方法是使用 CLI 运行aws ecs run-task命令并以这种方式执行。

于 2021-10-13T23:24:08.433 回答