配置 Python redshift_connector(或 psycopg2)以与 Redshift Serverless 连接

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

我只想使用 Python 连接到存储在 Redshift 无服务器中的数据。

当我运行下面的代码时,我看到一个错误。

import redshift_connector
conn = redshift_connector.connect(
    host='Endpoint in the screenshot',
    database='dev',
    user='my aws account id',
    password='my aws pw',
 )

由于它是无服务器的,“屏幕截图中的端点”看起来像“111111111111.us-east-1.redshift-serverless.amazonaws.com”(下图中的红色框)。

enter image description here

错误显示“redshift_connector.error.InterfaceError: ('通信错误', TimeoutError(60, '操作超时'))” 当我搜索它时,有人提到安全组中的“编辑入站规则”。因此我在其中添加了一条带有 TCP 协议的规则。另外,有些人提到“公开集群”。我不确定是否可以为 Redshift Serverless 设置此选项。我找不到该网页。另外,一些 Redshift 指令需要“cluster_id”作为参数,但我找不到此信息。

我还能尝试什么?

仅供参考。我对AWS不熟悉。我安装了 AWS CLI,并且可以通过运行“aws redshift-dataexecute-statement ...”来使用 CLI 获取数据。所以我认为使用Python库来获取数据也是可能的。对吗?

python amazon-redshift amazon-redshift-serverless
2个回答
2
投票

您可以公开访问您的无服务器集群:https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html

创建工作组时有一个设置可以公开访问,这意味着可以从互联网上查询该工作组。

否则,您必须从集群所在的同一 VPC 中的 lambda 函数或 EC2 实例进行查询,这是一个更好的安全设置,因为所有流量都保留在 VPC 中。


0
投票

请记住创建一个包含 redshift-connector 库的 Lambda 层,然后将其添加到 Lambda 函数。 Lambda 的一个常见错误是假设包含 import 语句就足够了。即使在创建新层之后,通常也会忘记将该新层显式附加到函数中。

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