我将我的完整堆栈项目部署到AWS ECS(Docker)中。到目前为止一切都很顺利。我的问题是,我不知道如何将我的本地机器连接到RDS-DB来迁移我的DB-Schema。
我想运行以下命令:prisma migrate deploy --preview-feature -->在DB中创建表和字段
我的RDS是专用的(没有公共可访问性的),与我的前端和后端在同一个VPC中。前端有一个公共安全组(Load),后端有一个私有安全组,并且拥有对DB的权限(请求正在工作,请得到错误:“当前数据库中不存在表public.Game”,我可以通过迁移来解决这个问题)。目前只有我的后端可以访问RDS。
我还尝试了一个测试DB,它是公共的(公共可访问性),并且能够从我的本地机器迁移。
您是如何在生产中迁移Prisma的,以及如何在没有公共可访问性的(无公共可访问性)的情况下将本地机器权限授予RDS?
发布于 2021-03-07 09:59:59
如果您可以从使用ECS部署的容器中运行该命令,并且在EC2实例上部署了ECS任务,则可以将ssh部署到实例中,并将docker exec部署到容器中(该容器可以连接到RDS ),您可以从容器中运行该命令。请注意,您的实例本身可能无法从您的膝上型计算机上公开访问(在这种情况下,您需要有某种堡垒主机才能做到这一点)。
如果您可以从使用ECS部署的容器中运行该命令,并且在Fargate上部署了ECS任务,这会更棘手一些,因为没有可以SSH进入的EC2实例。在这种情况下,我猜您需要部署一个临时环境(在EC2或ECS/EC2上),允许运行该命令来准备DB。
FYI我们即将发布一个新特性,它将允许您将exec放入容器(在ECS/EC2或ECS/Fargate上运行),而无需执行这些跳转(如果可能的话)。但是这个特性(还没有)可用。更多的这里。
发布于 2021-10-13 23:24:08
如果您让它在ECS中运行,那么创建另一个使用相同Docker映像的任务定义可能很简单,但它会重写命令参数来运行迁移命令,而不是普通的命令来启动应用程序。另一种类似的方法是使用CLI运行aws ecs run-task命令并以这种方式执行它。
https://stackoverflow.com/questions/66508106
复制相似问题