首页 > 解决方案 > 无法连接到在 EC2 实例中运行的 Postgres

问题描述

我在连接到 EC2 实例中的 PSQL 数据库时遇到了一些问题。我知道这里有很多关于这个的问题,但我似乎无法让它发挥作用。

这是我所做的所有配置。

这是我的postgresql.conf文件。我已经在这个文件中添加了最后一个

# Directory for PostgreSQL sockets, lockfiles and stats tempfiles
d /run/postgresql 2775 postgres postgres - -
# Log directory
d /var/log/postgresql 1775 root postgres - -

listen_addresses = '*'

这是我的pg_hba.conf文件。我在这个文件中添加了最后两行

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

host    all             all              0.0.0.0/0              md5
host    all             all              ::/0                   md5

我的 EC2s 安全组中的入站设置 在此处输入图像描述

我正在尝试从 lambda 函数连接到数据库。lambda 与 EC2 实例位于相同的安全组、VPC 和子网中。

这是 lambda 函数

exports.handler = async (event) => {
const { Client } = require('pg');  
const client = new Client();
let response = {};
try {
   await client.connect();
   await client.end();
   response = {
      statusCode: 200,
      result: "WooHoo connected to the DB"
  };
} catch (e) {
  response = {
  statusCode: 500,
  result: "Cant connect to DataBase" + e
  };
client.end();
}
return response;
};

当我测试 lambda 时,我得到以下响应

{
    "statusCode": 500,
    "result": "Cant connect to DataBaseError: connect ECONNREFUSED 172.31.29.67:5432"
}

172.31.29.67 是 EC2 实例的私有 IP。

我正在使用此处描述的步骤向 lambda 添加一个层以添加“pg”。

这些是我为 lambda 函数设置的环境变量

在此处输入图像描述

问题:

标签: postgresqlamazon-ec2aws-lambda

解决方案


原来我根本没有编辑 postgresql.conf 文件,而是其他一些随机文件。不知道那是怎么发生的。如果您有类似的问题,请使用命令搜索 postgresql.conf 文件

locate postgresql.conf

您正在寻找一个位于类似位置的文件

/etc/postgresql/11/main/postgresql.conf

然后将其添加到网络连接中的文件中。

listen_addresses = '*'

您需要重新启动 psql 服务才能使更改生效

sudo service postgresql restart

其余的与我在问题中描述的相同。


推荐阅读