我最初的计划是在aws上建立一个无服务器的aurora postgres数据库来省钱,因为我需要一些东西在开发环境中使用,我们可以从本地机器连接到它。在发现你不能拥有一个可公开访问的aurora无服务器postgres示例(AWS Aurora MySQL serverless: how to connect from MySQL Workbench)后,我决定选择一个db.t3.medium on demand示例。我使用以下terraform创建了它:
resource "aws_rds_cluster" "operational_postgresql" {
cluster_identifier = "aurora-postgres-cluster-dev"
engine = "aurora-postgresql"
engine_version = "14.3"
availability_zones = ["eu-west-1a", "eu-west-1b", "eu-west-1c"]
database_name = "operational_db"
master_username = "XXXXXX"
master_password = "XXXXXX"
backup_retention_period = 5
preferred_backup_window = "07:00-09:00"
skip_final_snapshot = false
final_snapshot_identifier = "aurora-postgres-dev-cluster-backup"
}
resource "aws_rds_cluster_instance" "operational_postgresql_db_dev" {
cluster_identifier = aws_rds_cluster.operational_postgresql.id
instance_class = "db.t3.medium"
engine = aws_rds_cluster.operational_postgresql.engine
engine_version = aws_rds_cluster.operational_postgresql.engine_version
publicly_accessible = true
}
并已验证群集具有写入器示例和读取器示例。我还验证了集群位于一个vpc内部,该vpc连接到一个internet gateway(它是默认的aws vpc,因为terraform中没有指定)。但是,当我尝试从自己的机器上用psycopg2调用这个数据库时,我得到以下错误:
*sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "aurora-postgres-cluster.cluster-XXXXXXXXX.eu-west-1.rds.amazonaws.com" (52.XXX.XXX.XXX), port 5432 failed: Operation timed out
Is the server running on that host and accepting TCP/IP connections?*
任何帮助将不胜感激。
1条答案
按热度按时间8wigbo561#
Aurora集群中的每个示例都有一个关联的“安全组”。安全组是您需要说明允许IP地址某某(或IP范围)连接到端口某某的地方。然后,您可以在任意多个示例中使用相同的安全组。您可以从EC2控制台找到安全组列表。
在安全组中,有一个选项可以自动填写您自己的当前IP作为允许连接的地址。我发现有时通过VPN时,它不会选择它应该使用的地址。对我来说最可靠的是从
curl --silent ifconfig.me
返回的任何内容。