使用 Lambda 连接到 Redshift(在私有子网中)

0

【以下的问题经过翻译处理】 我在私有子网中有一个 Redshift 集群,并且在Lambda中使用 Pyscopg2 库连接该集群。 我已经在 VPC部署了 Lambda,并且配置了正确的子网和安全组。

当我使用以下代码进行连接时,

try:
    client = boto3.client('redshift')
    creds = client.get_cluster_credentials(
      DbUser=REDSHIFT_USER,
      DbName=REDSHIFT_DATABASE,
      ClusterIdentifier=REDSHIFT_CLUSTER,
      DurationSeconds=3600)
  except Exception as ERROR:
    print("Credentials Issue: " + ERROR)
  try:

    conn = psycopg2.connect(
      dbname=REDSHIFT_DATABASE,
      user=creds['DbUser'],
      password=creds['DbPassword'],
      port=REDSHIFT_PORT,
      host=REDSHIFT_ENDPOINT)
  except Exception as ERROR:
    print("Connection Issue: ")
    raise

我收到以下错误

{
  "errorMessage": "FATAL:  no pg_hba.conf entry for host \"::ffff:10.209.4.117\", user \"IAM:awsuser\", database \"dev\", SSL off\n",
  "errorType": "OperationalError",

我在SQL客户端中添加以下配置解决了这个错误 AuthMech=REQUIRE&ssl=TRUE

但是,我还是不确定如何让 Lambda 里的代码连接到 Redshift。

profile picture
专家
已提问 6 个月前20 查看次数
1 回答
0

【以下的回答经过翻译处理】 检查一下 Lambda 是不是建立在了默认 VPC 中。它需要和 Redshift 在同一个 VPC 中运行。另外请在 此处 中阅读更多内容,您将找到一个使用 pg 而不是 pymysql连接到RDS的教程,这个教程也可以用来连接到 Redshift,pycopg2也类似这个用法。

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则