如何使用 prisma 连接 AWS aurora (postgreSQL)

我正在使用 nest.js 构建 API。我为 postgresSQl 创建了一个无服务器 RDS aurora 以将其用作数据库。

这是我的 aurora(postgresSQL) 数据库实例(连接性和安全性) enter image description here

  • 这是我的数据库配置 enter image description here

  • 这是我的安全组详细信息 enter image description here

然后我尝试使用端点、数据库、用户等进行连接,在 nest.js 中使用 prisma :

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = "postgresql://postgres:password@med.cluster-cnonikf1pbgi.ap-southeast-1.rds.amazonaws.com:5432/Medi?schema=public&ssl=true"
}

但是当我运行这个命令时:

npx prisma migrate dev --name init

我收到这样的错误:

Error: P1001: Can't reach database server at `med.cluster-cnonikf1pbgi.ap-southeast-1.rds.amazonaws.com`:`5432`

Please make sure your database server is running at `med.cluster-cnonikf1pbgi.ap-southeast-1.rds.amazonaws.com`:`5432`.
stack overflow How to connect AWS aurora (posgresSQL) using prisma
原文答案

答案:

作者头像

您无法连接到正在运行的 VPC 之外的无服务器极光集群。您尝试从本地计算机访问数据库,对吗?对于本地开发,您必须在 aurora 集群的同一 VPC 中创建一个 EC2 实例,并通过 SSH 连接到 EC2 实例,然后再连接到数据库。对于本地数据库管理工具,您还可以设置 SSH 端口转发。

作者头像

我能够直接连接到我的 Aurora 集群,而无需特殊网关或 ec2 实例。这对我有用:

  1. 确保您将“公共访问”设置为“公共访问”。您应该在创建数据库时看到此选项,但您也可以在创建数据库后通过转到 RDS -> 数据库 -> 选择数据库实例而不是集群来修改它(集群似乎不提供此选项) -> 单击右上角的“修改”按钮 -> 向下滚动到“连接”部分 -> 展开它,您将看到更改此设置的选项。

  2. 确保您分配给您的数据库的 VPC“安全组”授予对您的数据库的外部访问权限。步骤 1 中的相同“连接”部分还显示了您的数据库正在使用的 VPC 安全组。记下它的名字。您可以通过转到“VPC”服务配置页面查看您的安全组的详细信息:VPC -> 安全组 -> 单击您的安全组 -> 检查入站规则 -> 如果需要,请单击“创建新规则”编辑入站规则”-> 添加规则。如果您只想访问您的 IP,您可以选择“我的 IP”,它将预先填写您当前的 IP 地址。

我发现一些有用的资源:

Connecting from internet into VPC

Trouble Shooting Connectivity