

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 使用 Amazon Redshift RSQL 连接到集群
<a name="rsql-query-tool-starting-tool-connection"></a>

使用 Amazon Redshift，您可以连接到集群并使用 RSQL 与之交互。这是一个命令行工具，提供了一种安全的方式来查询数据、创建数据库对象和管理 Amazon Redshift 集群。以下各节将指导您完成使用 RSQL（带或不带数据来源名称（DSN））与集群建立连接的步骤。

## 在没有 DSN 的情况下连接
<a name="rsql-query-tool-starting-tool-connection-dsn-less-example"></a>

1. 在 Amazon Redshift 控制台上，选择要连接到的集群，然后记下端点、数据库和端口。

1. 在命令提示符下，使用命令行参数指定连接信息。

   ```
   rsql -h <endpoint> -U <username> -d <databasename> -p <port>
   ```

    在这里，以下内容适用：
   +  *<endpoint>* 是您在上一步中记录的**端点**。
   +  *<userid>* 是有权连接到集群的用户。
   +  *<databasename>* 是您在上一步中记录的**数据库名称**。
   +  *<port>* 是您在上一步中记录的**端口**。*<port>* 是一个可选参数。

   以下为示例。

   ```
   rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
   ```

1.  在密码提示符处，输入 *<username>* 用户的密码。

   成功的连接响应如下所示。

   ```
   % rsql -h testcluster.example.com -d dev -U user1 -p 5349
   Password for user user1:
   DSN-less Connected
   DBMS Name: Amazon Redshift
   Driver Name: Amazon Redshift ODBC Driver
   Driver Version: 1.4.27.1000
   Rsql Version: 1.0.1
   Redshift Version: 1.0.29306
   Type "help" for help.
   
   (testcluster) user1@dev=#
   ```

要连接的命令在 Linux、Mac OS 和 Windows 上具有相同的参数。

## 在使用 DSN 的情况下连接
<a name="rsql-query-tool-starting-tool-connection-dsn-example"></a>

可以使用 DSN 将 RSQL 连接到 Amazon Redshift，以简化连接属性的整理方式。本主题包括 ODBC 驱动程序安装说明和 DSN 属性的描述。

### 使用带密码的 DSN 连接
<a name="rsql-query-tool-starting-tool-connection-dsn-example-password"></a>

下面显示使用密码的 DSN 连接配置的示例。对于 Mac OSX 而言，默认 `<path to driver>` 为 `/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib`，对于 Linux 而言，则为 `/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`。

```
[testuser]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<database port>
Database=<dbname>
UID=<username>
PWD=<password>
sslmode=prefer
```

连接成功后，输出结果如下。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

### 使用单点登录 DSN
<a name="rsql-query-tool-starting-tool-connection-dsn"></a>

您可以配置 DSN 以进行单点登录身份验证。下面显示使用 Okta 单点登录的 DSN 连接配置的示例。

```
[testokta]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-US
iam=1
plugin_name=<plugin name>
uid=<okta username>
pwd=<okta password>
idp_host=<idp endpoint>
app_id=<app id>
app_name=<app name>
preferred_role=<role arn>
```

成功连接的输出示例。

```
% rsql -D testokta 
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

下面显示使用 Azure 单点登录的 DSN 连接配置的示例。

```
[testazure]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<cluster port>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-us
iam=1
plugin_name=<plugin name>
uid=<azure username>
pwd=<azure password>
idp_tenant=<Azure idp tenant uuid>
client_id=<Azure idp client uuid>
client_secret=<Azure idp client secret>
```

### 将 DSN 连接与 IAM 配置文件结合使用
<a name="rsql-query-tool-starting-tool-connection-dsn-iam"></a>

您可以使用配置的 IAM 配置文件连接到 Amazon Redshift。IAM 配置文件必须具有调用 `GetClusterCredentials` 的权限。以下示例演示了要使用的 DSN 属性。仅当 `Host` 不是 Amazon 提供的端点（如 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`）时，才需要 `ClusterID` 和 `Region` 参数。

```
[testiam]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Profile=default
```

`Profile` 密钥的值是您从 AWS CLI 凭证中选择的命名配置文件。此示例显示名为 `default` 的配置文件的凭证。

```
$ cat .aws/credentials
[default]
aws_access_key_id = ASIAIOSFODNN7EXAMPLE 
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

下面显示的是连接响应。

```
$ rsql -D testiam
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 将 DSN 连接与实例配置文件结合使用
<a name="rsql-query-tool-starting-tool-connection-dsn-instance"></a>

您可以使用 Amazon EC2 实例配置文件连接到 Amazon Redshift。实例配置文件必须具有调用 `GetClusterCredentials` 的权限。有关要使用的 DSN 属性，请参阅下面的示例。仅当 `Host` 不是 Amazon 提供的端点（如 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`）时，才需要 `ClusterID` 和 `Region` 参数。

```
[testinstanceprofile]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Instanceprofile=1
```

下面显示的是连接响应。

```
$ rsql -D testinstanceprofile
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 将 DSN 连接与默认凭证提供程序链结合使用
<a name="rsql-query-tool-starting-tool-connection-dsn-provider-chain"></a>

要使用默认凭证提供程序链进行连接，请仅指定 IAM 属性，Amazon Redshift RSQL 将尝试按照适用于 Java 的 AWS SDK 中[使用 AWS 凭证](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)所述的顺序获取凭证。链中必须至少一个提供程序具有 `GetClusterCredentials` 权限。例如，这对于从 ECS 容器进行连接非常有用。

```
[iamcredentials]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
```