在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
我正在尝试通过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。
我正在使用here中所述的步骤在lambda上添加一层以添加'pg'。
这些是我为lambda函数设置的环境变量
问题:
答案 0 :(得分:1)
结果是我根本没有编辑postgresql.conf文件,而是其他一些随机文件。不知道怎么回事。如果您有类似的问题,请使用以下命令搜索postgresql.conf文件
locate postgresql.conf
您正在寻找的文件看起来像
/etc/postgresql/11/main/postgresql.conf
,然后将其添加到网络连接中的文件中。
listen_addresses = '*'
您将需要重新启动psql服务以使更改生效
sudo service postgresql restart
其余与我在问题中描述的相同。