postgresql - 无法连接到在 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
我正在尝试从 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 函数设置的环境变量
问题:
- 为什么我的数据库拒绝连接?
- 我可以配置 EC2 安全组入站,以便只有 Lambda 可以连接 EC2 实例吗?
解决方案
原来我根本没有编辑 postgresql.conf 文件,而是其他一些随机文件。不知道那是怎么发生的。如果您有类似的问题,请使用命令搜索 postgresql.conf 文件
locate postgresql.conf
您正在寻找一个位于类似位置的文件
/etc/postgresql/11/main/postgresql.conf
然后将其添加到网络连接中的文件中。
listen_addresses = '*'
您需要重新启动 psql 服务才能使更改生效
sudo service postgresql restart
其余的与我在问题中描述的相同。
推荐阅读
- php - 在一个原子操作中从 InnoDB 表中选择和截断的最佳方法是什么?
- c# - 将枚举对象转换为等效的枚举对象
- d3.js - d3 路径 - 分成 2 条新路径
- python - 如何读取熊猫中具有数字字符串数字编号的自定义表格?
- drupal - Twig - 带有更多按钮的长文本
- c++ - 提取描述图形中线条的点
- spring-boot - ClassNotFoundException jackson.core.JsonFactory
- java - 如何将此大代码转换为 Java 8 lambda 表达式
- python-3.x - 将原始字符串分配给变量时 Python3 中的错误
- python - 如何在 Windows 10 上使用 Python(无需下载)从 Youtube URL 流式传输音频?