连接到 Amazon Redshift Serverless - Amazon Redshift

连接到 Amazon Redshift Serverless

设置好 Amazon Redshift Serverless 实例后,您可以使用下面概述的各种方法连接到该实例。如果您有多个团队或项目并且想单独管理成本,则可以单独使用 AWS 账户。

有关提供了 Amazon Redshift Serverless 的 AWS 区域 的列表,请参阅《Amazon Web Services 一般参考》中针对 Redshift Serverless API 列出的端点。

Amazon Redshift Serverless 连接到当前 AWS 区域中您的 AWS 账户中的无服务器环境。Amazon Redshift Serverless 在 VPC 中运行,端口范围为 5431-5455 和 8191-8215。默认值为 5439。目前,您只能通过 API 操作 UpdateWorkgroup 和 AWS CLI 操作 update-workgroup 更改端口。

连接到 Amazon Redshift Serverless

您可以使用以下语法,连接到 Amazon Redshift Serverless 中的数据库(名为 dev)。

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

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

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

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

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

要使用 JDBC 驱动程序版本 2.1.x 或更高版本,通过登录凭证进行连接以执行数据库身份验证,请使用以下语法。端口号是可选的;如果未包括在内,Amazon Redshift Serverless 默认使用端口号 5439。您可以更改为 5431-5455 或 8191-8215 端口范围内的另一个端口。要更改无服务器端点的默认端口,请使用 AWS CLI 和 Amazon Redshift API。

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

例如,以下连接字符串指定默认工作组、账户 ID 123456789012 和区域 us-east-2。

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

要使用 JDBC 驱动程序版本 2.1.x 或更高版本连接 IAM,请使用以下语法。端口号是可选的;如果未包括在内,Amazon Redshift Serverless 默认使用端口号 5439。您可以更改为 5431-5455 或 8191-8215 端口范围内的另一个端口。要更改无服务器端点的默认端口,请使用 AWS CLI 和 Amazon Redshift API。

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

例如,以下连接字符串指定默认工作组、账户 ID 123456789012 和区域 us-east-2。

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

对于 ODBC,使用以下语法。

Driver={Amazon Redshift (x64)}; Server=workgroup-name.account-number.aws-region.redshift-serverless.amazonaws.com; Database=dev

如果您使用 2.1.0.9 之前的 JDBC 驱动程序版本并与 IAM 连接,则需要使用以下语法。

jdbc:redshift:iam://redshift-serverless-<name>:aws-region/database-name

例如,以下连接字符串指定默认工作组和 AWS 区域 us-east-1。

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

有关驱动程序的更多信息,请参阅在 Amazon Redshift 中配置连接

查找您的 JDBC 和 ODBC 连接字符串

要使用 SQL 客户端工具连接到您的工作组,您必须具有 JDBC 或 ODBC 连接字符串。您可以在 Amazon Redshift Serverless 控制台中的工作组详细信息页面上查找连接字符串。

查找工作组的连接字符串
  1. 登录 AWS Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 在导航菜单上,选择 Redshift Serverless

  3. 在导航菜单上,选择工作组配置,然后从列表中选择集群名称以打开其详细信息。

  4. 一般信息部分中提供有 JDBC URLODBC URL 连接字符串以及其他详细信息。每个字符串均基于运行工作组的 AWS 区域。选择相应连接字符串旁边的图标来复制连接字符串。

使用数据 API 连接到 Amazon Redshift Serverless

还可使用 Amazon Redshift 数据 API 连接到 Amazon Redshift Serverless。在 AWS CLI 调用中使用 workgroup-name 参数而不是 cluster-identifier 参数。

有关数据 API 的更多信息,请参阅使用 Amazon Redshift 数据 API。有关在 Python 中调用数据 API 的示例代码以及其他示例,请参阅 GitHub 中的 Redshift 数据 API 入门,查看其中的 quick-startuse-cases 文件夹。

使用 SSL 连接到 Amazon Redshift Serverless

配置与 Amazon Redshift Serverless 的安全连接

为支持 SSL 连接,Redshift Serverless 会为每个工作组创建并安装 AWS Certificate Manager(ACM)颁发的 SSL 证书。ACM 证书受到大多数操作系统、Web 浏览器和客户端的公开信任。如果您的 SQL 客户端或应用程序使用 SSL 连接到 Redshift Serverless,并且 sslmode 连接选项设置为 requireverify-caverify-full,则您可能需要下载证书捆绑包。如果客户需要,Redshift Serverless 会提供如下捆绑证书:

  • 捆绑包下载地址:https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt

    • 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。

    • sha256 校验码为 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

    不要使用位于 https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt 的之前的证书捆绑包。

  • 在中国 AWS 区域,请从以下网址下载捆绑包:https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt

    • 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。

    • sha256 校验码是 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

    不要使用位于 https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ca-bundle.crthttps://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem 的以前的证书捆绑包

重要

Redshift Serverless 改变了我们管理 SSL 证书的方法。您可能需要更新当前的信任根 CA 证书,才能继续使用 SSL 连接到工作组。有关 SSL 连接的 ACM 证书的更多信息,请参阅将 SSL 连接过渡到 ACM 证书

默认情况下,无论连接是否使用 SSL,工作组数据库都会接受该连接。

要创建仅接受 SSL 连接的新工作组,请使用 create-workgroup 命令并将 require_ssl 参数设置为 true。要使用以下示例,请将 yourNamespaceName 替换为命名空间的名称,然后将 yourWorkgroupName 替换为工作组的名称。

aws redshift-serverless create-workgroup \ --namespace-name yourNamespaceName \ --workgroup-name yourWorkgroupName \ --config-parameters parameterKey=require_ssl,parameterValue=true

要将现有工作组更新为仅接受 SSL 连接,请使用 update-workgroup 命令并将 require_ssl 参数设置为 true。请注意,当您更新 require_ssl 参数时,Redshift Serverless 将重启工作组。要使用以下示例,请将 yourWorkgroupName 替换为工作组的名称。

aws redshift-serverless update-workgroup \ --workgroup-name yourWorkgroupName \ --config-parameters parameterKey=require_ssl,parameterValue=true

Amazon Redshift 支持 Elliptic Curve Diffie—Hellman Ephemeral (ECDHE) 密钥协商协议。ECDHE 使得客户端和服务器各有一个椭圆曲线公有/私有密钥对,用来在不安全的通道上创建共享密钥。您无需在 Amazon Redshift 中进行任何配置即可启用 ECDHE。如果您从使用 ECDHE 来加密客户端与服务器间通信的 SQL 客户端工具进行连接,则 Amazon Redshift 将使用提供的密码列表来建立合适的连接。有关更多信息,请参阅 Wikipedia 上的 Elliptic curve diffie—hellman 和 OpenSSL 网站上的密码

配置与 Amazon Redshift Serverless 的符合 FIPS 的 SSL 连接

要创建使用符合 FIPS 的 SSL 连接的新工作组,请使用 create-workgroup 命令并将 use_fips_ssl 参数设置为 true。要使用以下示例,请将 yourNamespaceName 替换为命名空间的名称,然后将 yourWorkgroupName 替换为工作组的名称。

aws redshift-serverless create-workgroup \ --namespace-name yourNamespaceName \ --workgroup-name yourWorkgroupName \ --config-parameters parameterKey=use_fips_ssl,parameterValue=true

要将现有工作组更新为使用符合 FIPS 的 SSL 连接,请使用 update-workgroup 命令并将 use_fips_ssl 参数设置为 true。请注意,当您更新 use_fips_ssl 参数时,Redshift Serverless 将重启工作组。要使用以下示例,请将 yourWorkgroupName 替换为工作组的名称。

aws redshift-serverless update-workgroup \ --workgroup-name yourWorkgroupName \ --config-parameters parameterKey=use_fips_ssl,parameterValue=true

有关将 Redshift Serverless 配置为使用符合 FIPS 的连接的更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 use_fips_ssl

从 Amazon Redshift 托管式 VPC 端点连接到 Amazon Redshift Serverless

从其他 VPC 端点连接到 Amazon Redshift Serverless

有关为 Amazon Redshift Serverless 工作组设置或配置托管 VPC 端点的信息,请参阅使用 Redshift 托管的 VPC 端点

从其他账户或区域中的 Redshift VPC 端点连接到 Amazon Redshift Serverless

从其他 VPC 端点连接到 Amazon Redshift Serverless

Amazon Redshift Serverless 在 VPC 中预置。您可以向其他账户中的 VPC 授予访问权限,以便访问您账户中的 Amazon Redshift Serverless。这与从托管 VPC 端点进行连接类似,但在本例中,连接源自其他账户中的数据库客户端。您可以执行几项操作:

  • 数据库所有者可将对包含 Amazon Redshift Serverless 的 VPC 的访问权限,授予同一区域的其他账户。

  • 数据库所有者可以撤销 Amazon Redshift Serverless 访问权限。

跨账户存取的主要好处是可以更轻松地进行数据库协作。用户无需在包含数据库的账户中进行预置即可访问该数据库,从而减少配置步骤并节省时间。

向其他账户中的 VPC 授予访问权所需的权限

要授予访问权限或更改所允许的访问权限,授予者需要具有以下权限的已分配权限策略:

  • redshift-serverless:PutResourcePolicy

  • redshift-serverless:GetResourcePolicy

  • redshift-serverless:DeleteResourcePolicy

  • ec2:CreateVpcEndpoint

  • ec2:ModifyVpcEndpoint

您可能需要在 AWS 托管式策略 AmazonRedshiftFullAccess 中指定的其他权限。有关更多信息,请参阅向 Amazon Redshift Serverless 授予权限

被授权者需要具有以下权限的已分配权限策略:

  • redshift-serverless:ListWorkgroups

  • redshift-serverless:CreateEndpointAccess

  • redshift-serverless:UpdateEndpointAccess

  • redshift-serverless:GetEndpointAccess

  • redshift-serverless:ListEndpointAccess

  • redshift-serverless:DeleteEndpointAccess

作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management

以下是用于配置跨 VPC 访问的资源策略示例:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountCrossVPCAccess", "Effect": "Allow", "Principal": { "AWS": [ "123456789012", "234567890123" ] }, "Action": [ "redshift-serverless:CreateEndpointAccess", "redshift-serverless:UpdateEndpointAccess", "redshift-serverless:DeleteEndpointAccess", "redshift-serverless:GetEndpointAccess" ], "Condition": { "ArnLike": { "redshift-serverless:AuthorizedVpc": [ "arn:aws:ec2:us-east-1:123456789012:vpc/*", "arn:aws:ec2:us-east-1:234567890123:vpc/vpc-456", "arn:aws:ec2:us-east-1:234567890123:vpc/vpc-987" ] } } } } ] }

这一部分中后面的步骤假定执行这些操作的用户已分配了相应的权限,例如,通过分配的具有所列权限的 IAM 角色。这些过程还假定工作组上附加了具有相应资源权限的 IAM 角色。

使用控制台向其他账户授予 VPC 访问权限

此过程演示了如果您是数据库所有者,当您想要授予数据库访问权限时,用于配置数据库访问权限的步骤。

从所有者账户授予访问权限
  1. 在 Amazon Redshift Serverless 工作组的属性中,在数据访问权限选项卡上,有一个名为授权账户的列表。其中显示授予了对工作组访问权限的账户和 VPC。找到列表并选择授予访问权限,将账户添加到列表中。

  2. 此时将出现一个窗口,您可以在其中添加被授权者信息。输入 AWS 账户 ID,这是您要向其授予访问权限的账户的 12 位数 ID。

  3. 向被授权者授予对所有 VPC 或特定 VPC 的访问权限。如果您仅向特定 VPC 授予访问权限,则可以输入这些 VPC 的 ID 并选择添加 VPC 来进行添加。

  4. 完成后,请保存更改

保存更改后,该账户将显示在授权账户列表中。该条目显示授予了访问权限的 账户 ID和 VPC 列表。

数据库所有者也可以撤消账户的访问权限。所有者可以随时撤销这些访问权限。

撤消账户的访问权限
  1. 您可以从授权账户列表开始操作。首先,选择一个或多个账户。

  2. 然后选择撤消访问权限

授予访问权限后,被授权者的数据库管理员可以查看控制台以确定自身是否有访问权限。

使用控制台确认已授予您访问其他账户的访问权限
  1. 在 Amazon Redshift Serverless 工作组属性中,在数据访问权限选项卡上,有一个名为已授权账户的列表。它显示了可以从此工作组访问的账户。被授权者不能使用工作组的端点 URL 直接访问工作组。要访问工作组,作为被授权者,您需要转到端点部分,然后选择创建端点

  2. 然后,作为被授权者,您需要提供端点名称和用于访问工作组的 VPC。

  3. 成功创建端点后,它会出现在端点部分,并且会有一个端点 URL。您可以使用此端点 URL 访问工作组。

使用 CLI 命令向其他账户授予访问权限

授予访问权限的账户必须先向另一个账户授予访问权限,然后才能使用 put-resource-policy 进行连接。数据库所有者可以调用 put-resource-policy 来授权其他账户创建与工作组的连接。然后,被授权者账户可以使用 create-endpoint-authorization,通过其允许的 VPC 创建与工作组的连接。

以下显示 put-resource-policy 的属性,您可以进行调用来允许访问特定账户和 VPC。

aws redshift-serverless put-resource-policy --resource-arn <value> --policy <value>

调用命令后,您可以调用 get-resource-policy,指定 resource-arn 以查看允许了哪些账户和 VPC 访问资源。

被授权者可以进行以下调用。它显示有关所授予访问权限的信息。具体而言,它会返回一个列表,其中包含授予了访问权限的 VPC。

aws redshift-serverless list-workgroups --owner-account <value>

此信息用于让被授权者从授权账户获取有关终端节点授权的信息。owner-account 是共享账户。当您运行它时,它会返回每个工作组的 CrossAccountVpcs,即允许的 VPC 的列表。作为参考,以下内容显示了工作组上提供的所有属性:

Output: workgroup (Object) workgroupId String, workgroupArn String, workgroupName String, status: String, namespaceName: String, baseCapacity: Integer, (Not-applicable) enhancedVpcRouting: Boolean, configParameters: List, securityGroupIds: List, subnetIds: List, endpoint: String, publiclyAccessible: Boolean, creationDate: Timestamp, port: Integer, CrossAccountVpcs: List
注意

提醒一下,集群重新定位不是配置其它 Redshift 联网特征的先决条件。在启用以下功能时,此功能也并非必需:

  • 从跨账户或跨区域 VPC 连接到 Redshift – 您可以从一个 AWS Virtual Private Cloud (VPC) 连接到另一个包含 Redshift 数据库的 Virtual Private Cloud (VPC),如此部分中所述。

  • 设置自定义域名 – 您可以为 Amazon Redshift 集群或 Amazon Redshift Serverless 工作组创建自定义域名,也称为自定义 URL,以提供更简单也更容易记住的端点名称。有关更多信息,请参阅使用自定义域名进行客户端连接

为 Amazon Redshift Serverless 配置适当的网络流量设置

当 Amazon Redshift Serverless 可公开访问时连接到它

有关网络流量设置的说明,请参阅使用默认或自定义安全组配置实现公开访问功能。这包括集群可公开访问时的使用案例。

当 Amazon Redshift Serverless 不可公开访问时连接到它

有关网络流量设置的说明,请参阅使用默认或自定义安全组配置实现私有访问功能。这包括集群无法在互联网上使用时的使用案例。

在 Amazon Redshift Serverless 中定义向联合用户授予的数据库角色

您可以定义组织中的角色,以确定在 Amazon Redshift Serverless 中授予哪些数据库角色。有关更多信息,请参阅 在 Amazon Redshift Serverless 中定义向联合用户授予的数据库角色

其他 资源

有关与 Amazon Redshift Serverless 的安全连接的更多信息,包括授予权限、授权访问其他服务以及创建 IAM 角色,请参阅 Amazon Redshift Serverless 中的 Identity and Access Management