无法使用 PgAdmin 连接到 Amazon Aurora

Unable to connect to Amazon Aurora with PgAdmin

我在我的 AWS 账户上创建了一个 Amazon Aurora Postgres 数据库,现在正尝试使用 PgAdmin 连接到它。我输入数据库名称、用户名、密码、主机和端口。当我尝试连接时遇到这个问题。

Unable to connect to server:

could not connect to server: Operation timed out
Is the server running on host "host_name.us-east-2.rds.amazonaws.com" (IP Address) and accepting
TCP/IP connections on port 5432?

我是 Amazon Aurora 的新手,不确定我下一步必须做什么才能连接。我阅读了文档,但找不到我要找的东西。当我尝试使用包含我的 Django 应用程序的生产服务器连接到它时,我也遇到了同样的错误。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dbname',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'hostname.us-east-2.rds.amazonaws.com',
        'PORT': '5432'
    }
}

我遇到了类似的问题

django.db.utils.OperationalError: could not connect to server: Connection timed out
        Is the server running on host "hostname.us-east-2.rds.amazonaws.com" (IP Address) and accepting
        TCP/IP connections on port 5432?

您应该将尝试连接的 IP 从 EC2 中的安全组添加到 RDS 的安全组作为传入 mysql 连接

我在这里发布了一个关于 PostgreSQL 的类似问题的答案,我认为这可能对 Aurora 也有帮助:

当您尝试在 EC2 或 EB 上将现有 RDS 数据库与 Django 一起使用时,您必须调整安全组,然后获取适当的参数并将它们设置为环境变量 (RDS_*)

1) 创建 RDS,并匹配这些:

Environment variables - RDS console label

RDS_HOSTNAME - Endpoint (this is the hostname)
RDS_PORT - Port
RDS_DB_NAME –  DB Name
RDS_USERNAME –  Username
RDS_PASSWORD – Password you set for your DB

2) 设置那些使用,例如,eb setenv

3) 转到您的 EC2/EB 实例并获取该实例的安全组,例如awseb-z-afsafdsaf-stack-AWSEBSecurityGroup-asfdsadfasdf 对于负载均衡器:awseb-e-adsfadsf-stack-AWSEBLoadBalancerSecurityGroup-asdfadsf

4) 转到您的 RDS 实例的面板,向下滚动到安全组并记下它拥有的安全组。例如rds-launch-wizard-1 (ab-sdjfalkajsdf39)

5) 点击RDS实例的modify,在中间的Security Groups设置中,添加上面找到的load balancer安全组。它应该有建议。

6) 转到 EC2 仪表板并从左侧菜单中选择安全组。

7) Select 负载均衡器安全组,并添加出站规则。类型应该是您的 RDS 类型 (PostgreSQL),目标应该是自定义和 RDS 实例的安全组。保存。

8) 对入站执行相同操作,使用相同的 RDS 类型和目的地

9) Select RDS 安全组,并添加一个入站规则,类似于 8,但使用您在步骤 2 中获得的 EC2 或 EB 实例。

10) 保存,大功告成。他们现在应该可以一起工作了。

我不是 100% 确定所有这些步骤都是必要的,一两个步骤可能不是必需的,但这帮我完成了工作。

对于 aws RDS 要记住的一件事是,如果您使用容量类型(平均角色)作为无服务器类型,这意味着 AWS RDS 将设法计算数据库实例的容量以匹配您的应用程序的使用。无服务器中还会有其他东西。 这使您的服务器无法 public 访问(与 ElasticCache 相同),但可以使用数据 API 进行连接或将您的 EC2 instance/lambda 函数放在该数据库所在的同一 VPC 中。