使用 Amazon Redshift RSQL 连接到集群
使用 Amazon Redshift,您可以连接到集群并使用 RSQL 与之交互。这是一个命令行工具,提供了一种安全的方式来查询数据、创建数据库对象和管理 Amazon Redshift 集群。以下各节将指导您完成使用 RSQL(带或不带数据来源名称(DSN))与集群建立连接的步骤。
在没有 DSN 的情况下连接
-
在 Amazon Redshift 控制台上,选择要连接到的集群,然后记下端点、数据库和端口。
-
在命令提示符下,使用命令行参数指定连接信息。
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
-
-
在密码提示符处,输入
<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 属性的描述。
使用带密码的 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
)时,才需要 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 连接与实例配置文件结合使用
您可以使用 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 连接与默认凭证提供程序链结合使用
要使用默认凭证提供程序链进行连接,请仅指定 IAM 属性,Amazon Redshift RSQL 将尝试按照适用于 Java 的 AWS SDK 中使用 AWS 凭证所述的顺序获取凭证。链中必须至少一个提供程序具有 GetClusterCredentials
权限。例如,这对于从 ECS 容器进行连接非常有用。
[iamcredentials] Driver=Default Host=testcluster.example.com Database=dev DbUser=testuser ClusterID=rsqltestcluster Region=us-east-1 IAM=1