使用 awswrangler 连接到 AWS Redshift

Connect to AWS Redshift using awswrangler

import awswrangler as wr
con = wr.redshift.connect("MY_GLUE_CONNECTION")

“MY_GLUE_CONNECTION”的值是多少?

您首先需要 to create a Glue connections 在 AWS 控制台中使用唯一名称

我们给它起个名字吧test_1

然后你可以把这个名字传给awswrangler

import awswrangler as wr
con = wr.redshift.connect("test_1")
with con.cursor() as cursor:
    cursor.execute("SELECT 1;")
    print(cursor.fetchall())
    con.close()

如果您安装并验证了 aws cli,它将无需任何进一步的步骤即可运行。这里的技巧是 boto3 auth mechanism used by awswrangler. awswrangler uses boto3 in awswrangler.redshift.connect() method 和以下注释 - boto3_session(boto3.Session(),可选)– Boto3 会话。如果 boto3_session 收到 None. 则将使用默认的 boto3 会话 所以,实际上 boto3_session 总是被使用,但是通过作为可选的,它的使用可能会被您隐藏。安装 aws cli 后,它将检查 ~/.aws/credentials && ~/.aws/config 并根据这些文件进行身份验证。 另一种选择是在您的代码中启动 boto3 会话并将其直接传递给您的方法。

import awswrangler as wr
import boto3

session = boto3.Session(
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN
)

con = wr.redshift.connect("test_1", boto3_session=session)
with con.cursor() as cursor:
    cursor.execute("SELECT 1;")
    print(cursor.fetchall())
    con.close()