AWS ECS & Prisma2 & RDS:将本地机器连接到私有数据库以使用 Prisma 进行迁移?

问题描述

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

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

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

我还使用公共(公共可访问性)的测试数据库进行了尝试,并且我能够从本地计算机迁移。

您通常如何在生产中迁移 prisma,我如何在没有公共可访问性的情况下授予我本地机器对 RDS 的权限?

解决方法

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

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

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