无法从 Python 连接到 Amazon Redshift Serverless - 连接超时

问题描述 投票:0回答:1

我一直在尝试使用 redshift_connector 包从 Python 连接到我的 Amazon Redshift Serverless 实例,但我不断遇到连接超时错误。

这就是我尝试连接的方式:


host="redshift-host"
database="dev"
port=5439
user="admin"
password="the-admin-password"
serverless_acct_id="my_serverless_account_id"
serverless_work_group="my_workgroup_name"

# Option 1

conn = redshift_connector.connect(

    iam=True,
    host=host,
    database=database,
    access_key_id="AWS_ACCESS_KEY_ID",
    secret_access_key="AWS_SECRET_ACCESS_KEY",
    session_token="AWS_SESSION_TOKEN",
    region="eu-north-1",
    is_serverless=True,
    serverless_acct_id=serverless_acct_id,
    serverless_work_group=serverless_work_group
)

# Option 2

conn = redshift_connector.connect(
    host=host,
    database=database,
    port=port,
    user=user,
    password=password,
)

这两种方法都失败了:

 raise OperationalError("connection time out", timeout_error) redshift_connector.error.OperationalError: ('connection time out', TimeoutError(60, 'Operation timed out'))

以下是我的设置的详细信息以及迄今为止我所尝试的内容:

我检查过的内容:

  • 公共可访问性:确认 Redshift 无服务器端点已设置为可公开访问。
  • 安全组:确保安全组允许端口 5439 上来自 0.0.0.0/0 的入站流量。
  • 网络 ACL:已验证子网的网络 ACL 不会阻止端口 5439 上的入站或出站流量。
  • 路由表:检查子网路由表是否包含到 Internet 网关的路由 (0.0.0.0/0 -> igw-XXXXXXXX)。 本地防火墙:没有防火墙规则阻止端口 5439 上的出站流量。

对我来说,一切似乎都应该正确设置,并且我应该能够连接。但是我仍然不断收到超时错误。我做错了什么?

我尝试允许安全组中的所有流量并设置可公开访问

True
。我预计能够连接,但超时了。

更新:
我尝试使用 JDBC 连接通过 DBeaver 连接到数据库,但也失败并出现错误:

Connection attempt timed out

所以在我看来,网络的设置方式似乎不允许传入连接......

python amazon-web-services amazon-redshift
1个回答
0
投票

我成功连接上了! Redshift 无服务器工作区连接到多个子网,其中一些子网是私有的。仅选择公共子网时,我能够连接。

© www.soinside.com 2019 - 2024. All rights reserved.