使用 Amazon Redshift RSQL 连接到集群 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon Redshift RSQL 连接到集群

在没有 DSN 的情况下连接

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

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

    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
  3. 在密码提示符处,输入 <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 进行连接

您可以使用数据源名称(DSN)将 RSQL 连接到 Amazon Redshift,以简化连接属性的组织。有关更多信息,请参阅 配置连接功能。本主题包括 ODBC 驱动程序安装说明以及 DSN 属性的说明。例如,以下章节在 Microsoft Windows 上安装和配置 Amazon Redshift ODBC 驱动程序显示了如何使用 Windows 连接 DSN。

使用带密码的 DSN 连接

下面显示使用密码的 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

您可以配置 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 配置文件结合使用

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

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

Profile 密钥的值是您从 Amazon 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 连接与实例配置文件结合使用

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

[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 连接与默认凭证提供程序链结合使用

要使用默认凭证提供程序链进行连接,请仅指定 IAM 属性,Amazon Redshift RSQL 将尝试按照适用于 Java 的 Amazon SDK 中使用 Amazon 凭证所述的顺序获取凭证。链中必须至少一个提供程序具有 GetClusterCredentials 权限。例如,这对于从 ECS 容器进行连接非常有用。

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