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

“MY_GLUE_CONNECTION”的值是多少?

4

1 回答 1

3

您需要先在 AWS 控制台中创建具有唯一名称的 Glue 连接

让我们给它起个名字 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并通过了身份验证,它将无需任何进一步的步骤即可工作。这里的技巧是awswrangler 使用的boto3 auth 机制awswrangler在awswrangler.redshift.connect()方法中使用boto3 并带有以下注释 - boto3_session (boto3.Session(), optional) – Boto3 Session。如果 boto3_session 接收无,则将使用默认的 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()
于 2021-05-17T04:53:40.410 回答