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

连接到 Amazon Redshift Serverless

Amazon Redshift 无服务器为您的 Amazon Web Services 账户 提供了无服务器端点。如果您有多个团队或项目并且想单独管理成本,则可以单独使用 Amazon Web Services 账户。

无服务器端点连接到当前 Amazon Web Services 区域 中您的 Amazon Web Services 账户 中的无服务器环境。无服务器端点在 VPC 中运行,不可公开访问。

Amazon Redshift 无服务器在以下 Amazon Web Services 区域 可用:

  • 美国东部(弗吉尼亚北部)区域 (us-east-1)

  • 美国东部(俄亥俄)区域 (us-east-2)

  • 美国西部(俄勒冈)区域 (us-west-2)

  • 欧洲(爱尔兰)区域(eu-west-2)

  • 欧洲(法兰克福)区域 (eu-central-1)

  • 亚太地区(东京)区域 (ap-northeast-1)

连接到无服务器端点

您可以使用以下语法连接到端点上的数据库(名为 dev)。

account-number.aws-region.redshift-serverless.amazonaws.com:port/dev

例如,以下连接字符串指定区域 us-east-1。

123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev

通过 JDBC 驱动程序连接到 Amazon Redshift Serverless

通过 Amazon Redshift 提供的 JDBC 驱动程序版本 2 驱动程序来使用首选 SQL 客户端,您可以使用以下方法之一连接到无服务器端点。

要使用 JDBC 驱动程序版本 2.x 连接 IAM,请使用以下语法。

jdbc:redshift:iam://redshift-serverless-default:aws-region/dev

例如,以下连接字符串指定区域 us-east-1。

jdbc:redshift:iam://redshift-serverless-workspace:us-east-1/dev

要使用 JDBC 驱动程序版本 2.0 或更高版本来连接数据库身份验证的用户名和密码,请使用以下语法。

jdbc:redshift://account-number.aws-region.redshift-serverless.amazonaws.com:5439/dev

例如,以下连接字符串在 us-east-2 区域中指定账户 ID 123456789012。

jdbc:redshift://123456789012.us-east-2.redshift-serverless.amazonaws.com:5439/dev

要使用 JDBC 驱动程序版本 2.1.0.3(可在预览期内应请求提供)连接 IAM,请使用以下语法。

jdbc:redshift:iam://account-number.aws-region.redshift-serverless.amazonaws.com:5439/dev

例如,以下连接字符串在 us-east-2 区域中指定账户 ID 123456789012。

jdbc:redshift:iam://123456789012.us-east-2.redshift-serverless.amazonaws.com:5439/dev

有关驱动程序的更多信息,请参阅《Amazon Redshift 集群管理指南》中的配置连接

Amazon Redshift 无服务器在以下 Amazon Web Services 区域 可用:

  • 美国东部(弗吉尼亚北部)区域 (us-east-1)

  • 美国东部(俄亥俄)区域 (us-east-2)

  • 美国西部(俄勒冈)区域 (us-west-2)

  • 欧洲(爱尔兰)区域 (eu-west-1)

  • 欧洲(法兰克福)区域 (eu-central-1)

  • 亚太地区(东京)区域 (ap-northeast-1)

使用数据 API 连接到无服务器端点

您还可使用 Amazon Redshift Data API 连接到无服务器端点。停止您的 Amazon CLI 调用中的 cluster-identifier 参数,以将查询路由到无服务器端点。

以下示例运行 SQL 语句,以从无服务器端点检索数据。此示例使用临时凭证身份验证方法。

aws redshift-data execute-statement --sql "select 1;" --database dev
{ "CreatedAt": 1636062665.587, "Database": "dev", "Id": "ad30c9a1-be92-4534-9edf-7d9aea4ea6a3" }

以下示例介绍了提交到无服务器端点的 SQL 语句。

aws redshift-data describe-statement --id 1d222b16-6470-467f-a1f8-7f38103dab11
{ "CreatedAt": 1636064662.659, "Duration": 4358742, "HasResultSet": true, "Id": "1d222b16-6470-467f-a1f8-7f38103dab11", "QueryString": "select 1;", "RedshiftPid": 1073881246, "RedshiftQueryId": 0, "ResultRows": 1, "ResultSize": 11, "Status": "FINISHED", "UpdatedAt": 1636064663.324

以下示例检索了针对无服务器端点运行的 SQL 语句的结果。

aws redshift-data get-statement-result --id 1d222b16-6470-467f-a1f8-7f38103dab11
{ "Records": [ [ { "longValue": 1 } ] ], "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "?column?", "length": 0, "name": "?column?", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "", "tableName": "", "typeName": "int4" } ], "TotalNumRows": 1 }

以下示例运行 SQL 语句,以从无服务器端点检索数据。此示例使用 Amazon Secrets Manager 身份验证方法。

首先,在 Amazon Secrets Manager 中创建密钥。

aws secretsmanager create-secret --name serverless-test --secret-string '{ "password": "Testing12345", "engine": "redshift", "host": "123456789012.us-east-1.redshift-serverless-dev.amazonaws.com", "port": 5439, "username": "testUser" }'
{ "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG", "Name": "serverless-test", "VersionId": "961a01eb-a30f-4d56-ab05-3708fd60d728" }

然后,使用密钥运行 SQL 语句进行身份验证。

aws redshift-data execute-statement --sql "select * from sys_query_history;" --database dev --secret-arn arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG
{ "CreatedAt": 1635990593.75, "Database": "dev", "Id": "56662da2-5691-4a8d-b1c1-cb73f577f08d", "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG" }

您还可以运行 SQL 语句的描述,以查看关联密钥。

aws redshift-data describe-statement --id 56662da2-5691-4a8d-b1c1-cb73f577f08d
{ "CreatedAt": 1635990593.75, "Duration": 632754750, "HasResultSet": true, "Id": "56662da2-5691-4a8d-b1c1-cb73f577f08d", "QueryString": "select * from sys_query_history;", "RedshiftPid": 1073963329, "RedshiftQueryId": 100880, "ResultRows": 7, "ResultSize": 4170, "SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:serverless-test-YY3nMG", "Status": "FINISHED", "UpdatedAt": 1635990595.083 }

有关数据 API 的更多信息,请参阅《Amazon Redshift 集群管理指南》中的使用 Amazon Redshift Data API

将 SSL 连接到无服务器端点

配置与 Amazon Redshift 无服务器的安全连接

Amazon Redshift 支持安全套接字层(SSL)连接,以加密查询和数据。要设置安全连接,您可以使用相同配置设置到预置 Redshift 集群的连接。按照 Configuring security options for connections(配置连接的安全选项)中的步骤进行操作,其中介绍了如何下载和安装可用的 SSL 证书捆绑包。该捆绑包适用于连接到无服务器 Redshift 实例和预置集群。

从其它 VPC 终端节点连接到 Amazon Redshift 无服务器

您可以从其它 VPC 终端节点(包括本地和公有 VPC 终端节点)连接到 Amazon Redshift 无服务器。

使用 Network Load Balancer 从公有子网连接到 Amazon Redshift 无服务器端点

要启用对 Amazon Redshift 无服务器端点的公有访问,请在 VPC 中配置 Network Load Balancer,以监听新目标组,该目标组配置为将流量路由到账户中的 Amazon Redshift 无服务器托管式 VPC 终端节点。有关网络负载均衡器的更多信息,请参阅 Amazon PrivateLink 指南Network Load Balancer 用户指南。使用 Amazon CloudFormation 安装 redshift-nlb.yml 模板以创建 Network Load Balancer 和侦听器目标组。

  1. 选择 Serverless configuration(无服务器配置)。

  2. 选择 Data access(数据访问)。

  3. 获取 Virtual Private Cloud(VPC)ID。例如,vpc-def12345。

  4. 获取 Subnet(子网)ID。例如,subnet-abc12345。

  5. 选择 VPC endpoint ID(VPC 终端节点 ID)链接以显示 VPC 控制面板。

  6. 选择 Endpoints(端点),然后获取 Endpoint ID(端点 ID)。例如,vpce-0123456789。

  7. 选择 Subnets(子网)选项卡,然后获取 IPv4 Address(IPv4 地址)。例如,123.12.3.12。

  8. 选择 Launch CFN stack(启动 CFN 堆栈)。

    (可选)您还可以下载和自定义 redshift-nlb.yml CloudFormation CFN 模板,然后打开 Amazon CloudFormation 并安装自定义模板。

    CloudFormation 控制台打开并选定 redshift-nlb.yml 模板。

  9. 选择 Next (下一步)。将显示指定堆栈详细信息选项。

  10. 输入 SubnetIds。例如,subnet-abc12345。

  11. 输入 VpcId。例如,vpc-def12345。

  12. 输入 VpcePrivateIpAddress。例如,123.12.3.12。

  13. 选择 Next (下一步)。将显示配置堆栈选项。

  14. 选择 Next(下一步),然后查看设置。

  15. 选择 Create stack(创建堆栈),Amazon CloudFormation 将创建 redshift-nlb 堆栈。

  16. 选择 Outputs(输出),然后获取 Network Load Balancer(NLB)DNS 名称。例如,redshift-serverless-123456789abcdf.elb.region.amazonaws.com。

从公有子网连接到 Amazon Redshift

您可使用 Network Load Balancer DNS 从公有子网连接到 Amazon Redshift。

在 PSQL 中,您可使用与以下内容类似的语法。

psql "host=redshift-serverless-dns-name.region.amazonaws.com dbname=dev port=5439 user=admin"

要使用首选查询编辑器和 JDBC 驱动程序版本 2,请确保已启用 SSL 并禁用服务器证书验证。您可使用类似于以下内容的语法。

jdbc:redshift://dns-name.region.amazonaws.com:5439/dev?useSSL=true&verifyServerCertificate=false