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

开始使用零 ETL 集成

在 Amazon Redshift 上配置零 ETL 集成之前,请配置您的集成源,并使用所需的参数和权限对它进行设置。然后,继续从 Amazon Redshift 控制台和 Amazon CLI 执行初始设置的剩余部分。

创建 Aurora 与 Amazon Redshift 的零 ETL 集成

要创建 Aurora 与 Amazon Redshift 的零 ETL 集成,请执行以下操作:

  1. 从 Amazon RDS 控制台,按照《Amazon Aurora 用户指南》中的说明,创建自定义数据库集群参数组

  2. 从 Amazon RDS 控制台,按照《Amazon Aurora 用户指南》中的说明,创建源 Amazon Aurora 数据库集群

  3. 从 Amazon Redshift 控制台:创建和配置目标 Amazon Redshift 数据仓库

  4. 从 Amazon RDS 控制台,按照《Amazon Aurora 用户指南》中的说明,创建零 ETL 集成

  5. 从 Amazon Redshift 控制台或查询编辑器 v2,通过您的集成创建 Amazon Redshift 数据库

    然后,使用复制的数据查询和创建实体化视图

创建 RDS 与 Amazon Redshift 的零 ETL 集成

要创建 RDS 与 Amazon Redshift 的零 ETL 集成,请执行以下操作:

  1. 从 Amazon RDS 控制台,按照《Amazon RDS 用户指南》中的说明,创建自定义数据库参数组

  2. 从 Amazon RDS 控制台,按照《Amazon RDS 用户指南》中的说明,创建源 Amazon RDS 实例

  3. 从 Amazon Redshift 控制台:创建和配置目标 Amazon Redshift 数据仓库

  4. 从 Amazon RDS 控制台,按照《Amazon RDS User Guide》中的说明,创建零 ETL 集成

  5. 从 Amazon Redshift 控制台或查询编辑器 v2,通过您的集成创建 Amazon Redshift 数据库

    然后,使用复制的数据查询和创建实体化视图

Amazon RDS 控制台提供了分步集成创建流程,在其中您可以指定源数据库和目标 Amazon Redshift 数据仓库。出现问题时,您可以选择让 Amazon RDS 为您修复问题,而无需在 Amazon RDS 或 Amazon Redshift 控制台中手动修复。

创建和配置目标 Amazon Redshift 数据仓库

在此步骤之前,请创建您的集成源并为零 ETL 集成的源类型配置所需的参数。

在此步骤中,您将创建并配置目标 Amazon Redshift 数据仓库,例如 Redshift Serverless 工作组或预置集群。

您的目标数据仓库必须具有以下特征:

  • 运行 Amazon Redshift Serverless 或实例类型为 ra3.16xlarge、ra3.4xlarge 或 ra3.xlplus 的预置集群。

  • 区分大小写(enable_case_sensitive_identifier) 功能已开启。有关更多信息,请参阅 为您的数据仓库开启区分大小写

  • 如果您的目标数据仓库是 Amazon Redshift 预置集群,则应加密。有关更多信息,请参阅 Amazon Redshift 数据库加密

  • 在与集成源相同的 Amazon 区域中创建。

注意

对于 Aurora PostgreSQL 和 RDS for MySQL 与 Amazon Redshift 的零 ETL 集成,您还应根据目标数据仓库考虑以下事项:

  • 您必须在 preview_2023 版本上创建预览版的数据仓库。您无法在生产中使用预览版功能,也无法将预览版数据仓库移至生产部署。

  • 如果您选择创建 Amazon Redshift 预置集群,则该集群必须至少有两个节点。

  • 对于 Aurora PostgreSQL 源,您必须在美国东部(俄亥俄州)Amazon 区域创建目标数据仓库。请注意,您必须使用 Amazon RDS 数据库预览环境为 Aurora PostgreSQL 零 ETL 集成创建源数据库。

    对于 RDS for MySQL 源,您必须在支持的 Amazon 区域中创建目标数据仓库。有关提供 RDS for MySQL 零 ETL 集成的 Amazon 区域列表,请参阅《Amazon RDS User Guide》中的 Supported Regions for zero-ETL integrations with Amazon Redshift

要为 Aurora PostgreSQL 和 RDS for MySQL 零 ETL 集成创建预览版的目标数据仓库,请根据您的部署类型参阅以下主题之一:

  • 要创建预览版 Amazon Redshift 预置集群,请参阅创建预览版集群。确保选择 preview_2023 跟踪以使用零 ETL 集成。

  • 要创建预览版 Amazon Redshift Serverless 工作组,请参阅创建预览工作组

要为 Aurora MySQL 零 ETL 集成创建目标数据仓库,请根据您的部署类型参阅以下主题之一:

当您创建预置集群时,Amazon Redshift 还会创建默认参数组。您无法编辑默认参数组。但是,您可以在创建新集群之前创建自定义参数组,然后将其与集群关联。您也可以编辑将与创建的集群关联的参数组。在创建自定义参数组或编辑现有参数组以使用零 ETL 集成时,您还必须为参数组开启区分大小写。

您可以使用 Amazon Redshift 控制台或 Amazon CLI 创建自定义参数组,方法如下:

为您的数据仓库开启区分大小写

您可以在创建过程中附加参数组,并为预置集群开启区分大小写。但是,只有在创建之后,您才能通过 Amazon Command Line Interface (Amazon CLI) 更新无服务器工作组。这是支持 MySQL 和 PostgreSQL 的区分大小写功能所必须的。enable_case_sensitive_identifier 是一个配置值,用于确定数据库、表和列的名称标识符是否区分大小写。必须开启此参数才能在数据仓库中创建零 ETL 集成。有关更多信息,请参阅 enable_case_sensitive_identifier

对于 Amazon Redshift Serverless – 使用 Amazon CLI 为 Amazon Redshift Serverless 开启区分大小写。请注意,您只能从 Amazon CLI 为 Amazon Redshift Serverless 开启区分大小写。

对于 Amazon Redshift 预置集群,请使用以下主题之一为目标集群启用区分大小写:

使用 Amazon CLI 为 Amazon Redshift Serverless 开启区分大小写

运行以下 Amazon CLI 命令为您工作组开启区分大小写。

aws redshift-serverless update-workgroup \ --workgroup-name target-workgroup \ --config-parameters parameterKey=enable_case_sensitive_identifier,parameterValue=true

请等待工作组状态变为 Active,然后再执行下一步操作。

使用 Amazon Redshift 控制台为 Amazon Redshift 预置集群开启区分大小写

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 在左侧导航窗格中,选择预置集群控制面板

  3. 选择要将数据复制到的预置集群。

  4. 在左侧导航窗格中,选择配置 > 工作负载管理

  5. 在工作负载管理页面中,选择参数组。

  6. 选择参数选项卡。

  7. 选择编辑参数,然后将 enable_case_sensitive_identifier 更改为 true

  8. 然后,选择保存

使用 Amazon CLI 为 Amazon Redshift 预置集群开启区分大小写

  1. 由于您无法编辑默认参数组,因此请在终端程序中运行以下 Amazon CLI 命令来创建自定义参数组。稍后,您将它与预置集群相关联。

    aws redshift create-cluster-parameter-group \ --parameter-group-name zero-etl-params \ --parameter-group-family redshift-1.0 \ --description "Param group for zero-ETL integrations"
  2. 运行以下 Amazon CLI 命令,为您参数组开启区分大小写。

    aws redshift modify-cluster-parameter-group \ --parameter-group-name zero-etl-params \ --parameters ParameterName=enable_case_sensitive_identifier,ParameterValue=true
  3. 运行以下命令,将参数值与集群关联。

    aws redshift modify-cluster \ --cluster-identifier target-cluster \ --cluster-parameter-group-name zero-etl-params
  4. 等待预调配集群变为可用。您也可以使用 describe-cluster 命令查看集群的状态。然后,运行以下命令可重启集群。

    aws redshift reboot-cluster \ --cluster-identifier target-cluster

为您的 Amazon Redshift 数据仓库配置授权

要将数据从集成源复制到 Amazon Redshift 数据仓库中,您必须首先添加以下两个实体:

  • 已授权的主体 – 标识可以在数据仓库中创建零 ETL 集成的用户或角色。

  • 已授权的集成源 – 标识可以更新数据仓库的源数据库。

您可以从 Amazon Redshift 控制台的资源策略选项卡或者使用 Amazon Redshift PutResourcePolicy API 操作,配置授权主体和授权集成源。

添加已授权的主体

要在您的 Redshift Serverless 工作组或预置集群中创建零 ETL 集成,需要授予对关联命名空间或预置集群的访问权限。

如果满足以下两个条件,则可以跳过此步骤:

  • 拥有 Redshift Serverless 工作组或预置集群的 Amazon Web Services 账户也拥有源数据库。

  • 该主体与基于身份的 IAM 策略相关联,该策略使其有权在此 Redshift Serverless 命名空间或预置集群中创建零 ETL 集成。

将已授权的主体添加到 Amazon Redshift Serverless 命名空间

  1. 在 Amazon Redshift 控制台的左侧导航窗格中,选择 Redshift Serverless

  2. 选择命名空间配置,选择您的命名空间,然后转到资源策略选项卡。

  3. 选择添加已授权的主体

  4. 对于要添加的每个已授权的主体,输入您想要授予访问权限的 Amazon 用户或角色的 ARN,或者 Amazon Web Services 账户的 ID,以便他们能在命名空间中创建零 ETL 集成。账户 ID 存储为 ARN。

  5. 选择 Save changes(保存更改)

向 Amazon Redshift 预置集群添加已授权的主体

  1. 在 Amazon Redshift 控制台的左侧导航窗格中,选择预置集群控制面板

  2. 选择集群,然后选择集群并转到资源策略选项卡。

  3. 选择添加已授权的主体

  4. 对于要添加的每个已授权的主体,输入您想要授予访问权限的 Amazon 用户或角色的 ARN,或者 Amazon Web Services 账户的 ID,以便他们能在集群中创建零 ETL 集成。账户 ID 存储为 ARN。

  5. 选择 Save changes(保存更改)

添加已授权的集成源

要允许您的源更新 Amazon Redshift 数据仓库,您必须将其作为已授权的集成源添加到命名空间。

向 Amazon Redshift Serverless 命名空间添加已授权的集成源

  1. 在 Amazon Redshift 控制台中,转到无服务器控制面板

  2. 选择命名空间的名称。

  3. 转到资源策略选项卡。

  4. 选择添加已授权的集成源

  5. 指定用于零 ETL 集成的源的 ARN。

注意

移除已授权的集成源会阻止数据复制到命名空间。此操作会停用从该源到此命名空间的所有零 ETL 集成。

向 Amazon Redshift 预置集群添加已授权的集成源

  1. 在 Amazon Redshift 控制台中,转到预置集群控制面板

  2. 选择预置集群的名称。

  3. 转到资源策略选项卡。

  4. 选择添加已授权的集成源

  5. 指定作为零 ETL 集成的数据来源的源 ARN。

注意

移除已授权的集成源会阻止数据复制到预置集群。此操作会停用从该源到此 Amazon Redshift 预置集群的所有零 ETL 集成。

使用 Amazon Redshift API 配置授权

您可以使用 Amazon Redshift API 操作来配置用于零 ETL 集成的资源策略。

要控制可以在命名空间中创建入站集成的源,请创建资源策略并将其附加到命名空间。使用资源策略,您可以指定有权访问集成的源。资源策略附加到目标数据仓库的命名空间,以允许源创建入站集成,将数据从源中复制到 Amazon Redshift。

以下是资源策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Condition": { "StringEquals": { "aws:SourceArn": "source_arn" } } }, { "Effect": "Allow", "Principal": { "AWS": "source_principal" }, "Action": "redshift:CreateInboundIntegration" } ] }

以下总结了可用于为集成配置资源策略的 Amazon Redshift API 操作:

  • 使用 PutResourcePolicy API 操作来使资源策略生效。当您提供其他资源策略时,将替换该资源上之前的资源策略。使用前面的资源策略示例,该策略授予执行以下操作的权限:

    • CreateInboundIntegration – 允许源主体创建入站集成,以便将数据从源复制到目标数据仓库。

    • AuthorizeInboundIntegration – 允许 Amazon Redshift 持续验证目标数据仓库是否能够接收从源 ARN 复制的数据。

  • 使用 GetResourcePolicy API 操作可查看现有资源策略。

  • 使用 DeleteResourcePolicy API 操作可从资源中移除资源策略。

要更新资源策略,您也可以使用 put-resource-policy Amazon CLI 命令。

后续步骤

现在,您已经为目标 Amazon Redshift 数据仓库配置了授权,您可以创建零 ETL 集成并开始复制数据。

根据您的源,请执行下列操作之一。