使用 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
EXPERTE
gefragt vor 6 Monaten19 Aufrufe
1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt