设置自定义域名
设置自定义域名由多项任务组成:包括向 DNS 提供商注册域名和创建证书。执行这些工作后,您可以在 Amazon Redshift 控制台中或 Amazon Redshift Serverless 控制台中配置自定义域名,或者使用 Amazon CLI 命令对其进行配置。这些步骤将在以下各节详细介绍。
注册域名并选择证书
您必须有一个已注册的互联网域名,才能在 Amazon Redshift 中配置自定义域名。您可以使用 Route 53 或第三方域注册提供商来注册互联网域。您在 Amazon Redshift 控制台之外完成这些任务。要想完成创建自定义域的剩余过程,有一个已注册的域是先决条件。
注意
如果您使用预置集群,在执行步骤以配置自定义域名之前,必须启用重新定位。有关更多信息,请参阅重新定位集群。Amazon Redshift Serverless 不需要此步骤。
自定义域名通常包括根域和子域,例如 mycluster.example.com
。要对其进行配置,请执行以下步骤:
为您的自定义域名创建 DNS CNAME 条目
注册一个根域,例如,
example.com
。您可以选择使用现有域。您的自定义名称可能会受到对特定字符的限制或其他命名验证的限制。有关向 Route 53 注册域的更多信息,请参阅 Registering a new domain。添加一个 DNS CNAME 记录,将您的自定义域名指向集群或工作组的 Redshift 端点。您可以在 Redshift 控制台或 Amazon Redshift Serverless 控制台中,在集群或工作组的属性中查找端点。在一般信息下,复制集群或工作组属性中提供的 JDBC URL。URL 类似于以下内容:
对于Amazon Redshift 集群:
redshift-cluster-sample.abc123456.us-east-1.redshift.amazonaws.com
对于 Amazon Redshift Serverless 工作组:
endpoint-name.012345678901.us-east-1-dev.redshift-serverless-dev.amazonaws.com
如果 URL 有 JDBC 前缀,请将其删除。
注意
DNS 记录视可用性而定,因为每个名称都必须是唯一的,并且可以在您的组织内使用。
限制
在为自定义域创建 CNAME 记录时,需要注意几个限制:
对于同一个预置集群或 Amazon Redshift Serverless 工作组,不支持创建多个自定义域名。您只能关联一个 CNAME 记录。
不支持将 CNAME 记录与多个集群或工作组关联。每个 Redshift 资源的 CNAME 必须唯一。
注册域并创建 CNAME 记录后,选择新的或现有的证书。您可以使用 Amazon Certificate Manager 执行此步骤:
为域名请求来自 ACM 的证书
登录到 Amazon Web Services Management Console 并通过 https://console.aws.amazon.com/acm/
打开 ACM 控制台。 选择请求证书。
在域名字段中,输入您的自定义域名。
注意
除了证书域之外,您还可以指定许多前缀,以便将单个证书用于多个自定义域记录。举例来说,您可以将其他记录(例如
one.example.com
、two.example.com
)或通配符 DNS 记录(例如*.example.com
)与同一个证书一起使用。选择 Review and request。
选择 Confirm and request。
如果请求有效,Internet 域中注册的拥有者必须同意请求,然后 ACM 才能颁发证书。完成这些步骤后,请确保在 ACM 控制台中,状态显示为已颁发。
我们建议您创建符合托管续订资格的 DNS 经验证证书,这些证书在 Amazon Certificate Manager 中提供。托管续订意味着 ACM 将自动续订您的证书,或者在接近过期时向您发送电子邮件通知。有关托管证书续订的更多信息,请参阅ACM 证书的托管续订。
创建自定义域
您可以使用 Amazon Redshift 或 Amazon Redshift Serverless 控制台创建自定义域 URL。如果您尚未进行配置,则自定义域名属性会在一般信息下显示为短划线(–)。创建 CNAME 记录和证书后,您可以关联集群或工作组的自定义域名。
创建自定义域关联需要以下 IAM 权限:
redshift:CreateCustomDomainAssociation
– 您可以通过添加特定集群的 ARN 来限制对该集群的权限。redshiftServerless:CreateCustomDomainAssociation
– 您可以通过添加特定工作组的 ARN 来限制对该工作组的权限。acm:DescribeCertificate
作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
您可以通过执行以下步骤来分配自定义域名。
在 Redshift 控制台中选择集群,或者在 Amazon Redshift Serverless 控制台中选择工作组,然后在操作菜单下选择创建自定义域名。此时将显示对话框。
输入自定义域名。
为 ACM 证书选择来自 Amazon Certificate Manager 的 ARN。确认您所做的更改。根据您创建证书的步骤中的指导,我们建议您通过 Amazon Certificate Manager,选择符合托管续订资格的 DNS 经验证证书 。
在集群属性中,验证自定义域名和自定义域证书 ARN 中填充了您的条目,并列出了自定义域证书的到期日期。
配置自定义域后,仅可为新的自定义域使用 sslmode=verify-full
。它不适用于默认端点。但您仍然可以使用其他 ssl 模式(例如 sslmode=verify-ca
)连接到默认端点。
使用控制台重命名分配了自定义域的集群
注意
这一系列步骤不适用于 Amazon Redshift Serverless 工作组。您无法更改工作组名称。
要重命名具有自定义域名的集群,需要 acm:DescribeCertificate
IAM 权限。
请转至 Amazon Redshift 控制台并选择要更改其名称的集群。选择编辑,编辑集群属性。
编辑集群标识符。您也可以更改集群的其他属性。然后选择保存更改。
重命名集群后,你必须更新 DNS 记录,将自定义域的 CNAME 条目更改为指向更新后的 Amazon Redshift 端点。
更新灾难恢复使用案例中的 CNAME 记录
在灾难恢复情况下,使用 CNAME 记录创建自定义域可能很有用。如果您无法访问数据仓库,下面的过程详细说明了在无法访问主数据库集群或工作组时可以采取的操作。
我们假设您遵循高可用性实践并拥有辅助资源。例如,在这种情况下,您可以有一个热备用集群或工作组,可用于定期接收来自主集群的还原数据。此备份数据仓库可位于其他 Amazon 可用区或单独的区域中。您可以通过完成以下步骤,将客户端重定向到其上:
此步骤假定您的集群或工作组在控制台中可用。如果不可用,您可以跳过它:在 Amazon Redshift 控制台中选择主集群,或者在 Amazon Redshift Serverless 控制台中选择主工作组。自定义域名显示在属性中。从操作菜单中选择删除自定义域名。在显示的窗口中,键入 delete 以确认并选择删除。
选择新的集群或工作组。按照本主题中的步骤创建自定义域名。使用相同的域名,并选择用于主集群或工作组的相同 CNAME 记录。如果您的辅助资源位于新区域,则必须创建并使用新证书。
转到您的域注册提供商。这可以是 Route 53 或第三方提供商。选择您最初创建的 CNAME 记录。创建记录时,您需要将其设置为将流量路由到主集群或工作组的端点 URL。将该值更改为备用集群或工作组的端点 URL。保存更改后,它会将流量路由到新资源。请注意,您可能需要等待 DNS 传播。
这是一个可选步骤:更改入站和出站安全组网络流量规则,将流量路由到备用集群或工作组。此外,在激活备用资源时,系统假定您已经运行或计划运行还原操作,以使备用数据与生产数据保持一致。
更改端点 URL 值来重新路由流量的优势之一是,使用您的自定义域名的客户端无需进行任何配置更改。无需更改它们的连接属性。
请注意,您采取的任何灾难恢复步骤都应符合现有的可用性计划。其他弹性策略,例如在多个区域中部署资源或复杂的备份技术,均不在本文档的讨论范围之内。
注意
提醒一下,集群重新定位不是配置其他 Redshift 联网功能(例如用于灾难恢复或其他用途的功能)的先决条件。您无需将其开启即可启用以下功能:
从跨账户或跨区域 VPC 连接到 Redshift – 您可以从一个 Amazon Virtual Private Cloud (VPC) 连接到另一个包含 Redshift 数据库的虚拟私有云 (VPC)。这简化了管理,例如,对于来自不同账户或 VPC 的客户端访问,无需对连接到数据库的身份提供本地 VPC 访问权限。有关更多信息,请参阅从其他账户或区域中的 Redshift VPC 端点连接到 Amazon Redshift Serverless。
设置自定义域名 – 您可以创建自定义域名(如本主题中所述),以使端点名称更加相关和简单。
使用 CLI 命令描述自定义域关联
使用此部分中的命令,获取与特定预置集群或 Amazon Redshift Serverless 工作组关联的自定义域名列表。
您需要以下权限:
对于预置集群:
redshift:DescribeCustomDomainAssociations
对于 Amazon Redshift Serverless 工作组:
redshiftServerless:ListCnameAssociations
作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
以下显示的示例命令用于列出给定 Amazon Redshift 集群的自定义域名:
aws redshift describe-custom-domain-association ––cluster-id
redshiftclustersample
––custom-domain-namecustomdomainname
启用自定义域名后,您可以运行此命令来确定与集群关联的自定义域名。有关用于描述自定义域关联的 CLI 命令的更多信息,请参阅 describe-custom-domain-associations
与此类似,以下显示的示例命令用于列出给定 Amazon Redshift Serverless 工作组的自定义域名:有两种不同方法可以做到这一点。您可以只提供自定义域名:
aws redshift-serverless list-cname-associations ––custom-domain-name
customdomainnamesample
您也可以通过只提供工作组名称来获取关联:
aws redshift-serverless list-cname-associations ––workgroup-name
workgroupnamesample
您也可以通过只提供证书 ARN 来获取关联:
aws redshift-serverless list-cname-associations ––custom-certificate-arn
certificatearnsample
启用自定义域名后,您可以运行这些命令来确定与工作组关联的自定义域名。您也可以运行命令来获取自定义域关联的属性。为此,您必须将自定义域名和工作组名称作为参数提供。该命令返回证书 ARN、工作组名称和自定义域的证书到期时间:
aws redshift-serverless get-custom-domain-association ––workgroup-name
workgroupnamesample
––custom-domain-namecustomdomainnamesample
有关可用于 Amazon Redshift Serverless 的 CLI 参考命令更多信息,请参阅 redshift-serverless。
将自定义域与不同证书关联
更改自定义域名的证书关联需要以下 IAM 权限:
redshift:ModifyCustomDomainAssociation
acm:DescribeCertificate
作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
使用以下命令将自定义域关联到不同的证书。––custom-domain-name
和 custom-domain-certificate-arn
参数为必需。新证书的 ARN 必须与现有 ARN 不同。
aws redshift modify-custom-domain-association ––cluster-id
redshiftclustersample
––custom-domain-namecustomdomainnamesample
––custom-domain-certificate-arnARNsample
以下示例显示了如何为 Amazon Redshift Serverless 将自定义域关联到不同的证书。
aws redshift-serverless modify-custom-domain-association ––workgroup-name
redshiftworkgroupsample
––custom-domain-namecustomdomainnamesample
––custom-domain-certificate-arnARNsample
最多会有 30 秒的延迟,然后您才能连接到集群。部分延迟发生在 Amazon Redshift 集群更新其属性时,而在 DNS 更新时也会造成一些额外的延迟。有关 API 和每个属性设置的更多信息,请参阅 modifyCustomDomainAssociation。
删除自定义域
要删除自定义域名,用户必须具有执行以下操作的权限。
对于预置集群:
redshift:DeleteCustomDomainAssociation
对于 Amazon Redshift Serverless 工作组:
redshiftServerless:DeleteCustomDomainAssociation
在控制台上
您可以选择操作按钮并选择删除自定义域名,从而删除自定义域名。完成此操作后,您仍然可以更新工具以使用控制台中列出的端点,从而连接到服务器。
使用 CLI 命令
以下示例显示了如何删除自定义域名。删除操作要求您提供集群的现有自定义域名。
aws redshift delete-custom-domain-association ––cluster-id
redshiftclustersample
––custom-domain-namecustomdomainnamesample
以下示例显示了如何删除 Amazon Redshift Serverless 工作组的自定义域名。自定义域名是必填参数。
aws redshift-serverless delete-custom-domain-association ––workgroup-name
workgroupname
––custom-domain-namecustomdomainname
有关更多信息,请参阅 DeleteCustomDomainAssociation。
通过 SQL 客户端使用自定义域名连接到集群或工作组
要使用自定义域名进行连接,预置集群需要以下 IAM 权限:redshift:DescribeCustomDomainAssociations
。对于 Amazon Redshift Serverless,您不必添加权限。
作为最佳实践,我们建议将权限策略附加到 IAM 角色,然后根据需要将其分配给用户和组。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
在控制台中完成创建 CNAME 并将其分配给集群或工作组的步骤后,您可以在 SQL 客户端的连接属性中提供自定义 URL。请注意,在创建 CNAME 记录后,DNS 传播可能会立即导致延迟。
打开 SQL 客户端。例如,您可以使用 SQL/Workbench J。打开连接的属性,然后为连接字符串添加自定义域名。例如,
jdbc:redshift://mycluster.example.com:5439/dev?sslmode=verify-full
。在此示例中,dev
指定默认数据库。为您的数据库用户添加用户名和密码。
测试连接。根据授予数据库用户的权限或授予所分配的 Amazon Redshift 数据库角色的权限,您查询特定表等数据库资源的能力可能会有所不同。
请注意,如果您的集群或工作组位于 VPC 中,则可能需要将集群或工作组设置为可公开访问才能连接到其上。您可以在网络属性中更改此设置。
注意
JDBC 和 Python 驱动程序支持与自定义域名的连接。不支持 ODBC 连接。