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

创建 Aurora 与 Amazon Redshift 的零 ETL 集成

在创建 Aurora 零 ETL 集成时,需要指定源Aurora 数据库集群和目标 Amazon Redshift 数据仓库。您还可以自定义加密设置和添加标签。Aurora 在源数据库集群与其目标之间创建集成。集成激活后,您插入到源数据库集群中的任何数据都将复制到配置的 Amazon Redshift 目标中。

先决条件

在创建零 ETL 集成之前,必须创建源数据库集群和目标 Amazon Redshift 数据仓库。您还必须通过将数据库集群添加为授权集成源来允许复制到数据仓库。

有关完成其中每个步骤的说明,请参阅开始使用 Aurora 与 Amazon Redshift 的零 ETL 集成

所需的权限

创建零 ETL 集成需要具有某些 IAM 权限。至少您需要具有执行以下操作的权限:

  • 为源 Aurora 数据库集群创建零 ETL 集成。

  • 查看和删除所有零 ETL 集成。

  • 在目标数据仓库中创建入站集成。如果同一个账户拥有 Amazon Redshift 数据仓库并且该账户是该数据仓库的授权主体,则不需要此权限。有关添加授权主体的信息,请参阅为您的 Amazon Redshift 数据仓库配置授权

以下示例策略演示了创建和管理集成所需的最低权限。如果您的用户或角色具有更广泛的权限(例如 AdministratorAccess 托管式策略),则可能不需要这些确切的权限。

注意

Redshift Amazon 资源名称(ARN)采用以下格式。请注意,在无服务器命名空间 UUID 之前使用了正斜杠((/)而不是冒号(:)。

  • 预调配集群 – arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • 无服务器 – arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

重要

对于 Aurora PostgreSQL 预览版,Amazon RDS 数据库预览环境中的所有 ARN 和操作都已将 -preview 附加到服务命名空间。例如,rds-preview:CreateIntegrationarn:aws:rds-preview:…

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:cluster:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

在不同的账户中选择目标数据仓库

如果您计划指定位于另一个 Amazon Web Services 账户中的目标 Amazon Redshift 数据仓库,则必须创建一个角色,以允许当前账户中的用户访问目标账户中的资源。有关更多信息,请参阅在您拥有的其他 Amazon Web Services 账户中向 IAM 用户提供访问权限

该角色必须具有以下权限,这些权限允许用户查看目标账户中可用的 Amazon Redshift 预调配集群和 Redshift Serverless 命名空间。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "Resource":[ "*" ] } ] }

该角色必须具有以下信任策略,该策略指定目标账户 ID。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

有关创建角色的说明,请参阅使用自定义信任策略创建角色

创建零 ETL 集成

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 创建 Aurora MySQL 零 ETL 集成要创建 Aurora PostgreSQL 集成,必须使用 Amazon Web Services Management Console。

创建零 ETL 集成
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

    如果您使用 Aurora PostgreSQL 数据库集群作为集成的来源,则必须通过 https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2#databases 登录 Amazon RDS 数据库预览环境。

  2. 在左侧导航窗格中,选择零 ETL 集成

  3. 选择创建零 ETL 集成

  4. 集成标识符中,输入集成的名称。该名称可包含最多 63 个字母数字字符,并且可以包含连字符。

  5. 选择下一步

  6. 对于,请选择数据将源自其中的 Aurora 数据库集群集群必须运行 Aurora MySQL 版本 3.05 或更高版本,或者 Aurora PostgreSQL(兼容 PostgreSQL 15.4 和零 ETL 支持)

    注意

    对于 MySQL 源,如果数据库集群参数配置不正确,RDS 会通知您。如果您收到此消息,可以选择为我修复,也可以手动配置它们。有关手动修复它们的说明,请参阅步骤 1:创建自定义数据库集群参数组

    修改数据库集群参数需要重启。在创建集成之前,必须完成重启,并且必须成功地将新的参数值应用于集群

  7. 如果您选择了 Aurora PostgreSQL 源集群,请在命名数据库下,指定要用作集成源的命名数据库。PostgreSQL 资源模型允许在单个数据库集群中创建多个数据库,但每个零 ETL 集成只能使用一个数据库。

    命名数据库必须从 template1 中创建。有关更多信息,请参阅 PostgreSQL 文档中的 Template Databases

  8. (可选)如果您选择了 Aurora MySQL 源数据库集群,请选择自定义数据筛选选项并向您的集成添加数据筛选条件。您可以使用数据筛选条件来定义复制到目标数据仓库的范围。有关更多信息,请参阅 Aurora 与 Amazon Redshift 零 ETL 集成的数据筛选

  9. 成功配置源数据库集群后,选择下一步

  10. 对于目标,执行以下操作:

    1. (可选)要为 Amazon Redshift 目标使用不同的 Amazon Web Services 账户,请选择指定其他账户。然后,输入有权显示您数据仓库的 IAM 角色的 ARN。有关创建 IAM 角色的说明,请参阅在不同的账户中选择目标数据仓库

    2. 对于 Amazon Redshift 数据仓库,选择从源数据库集群中复制的数据的目标。您可以选择预调配的 Amazon Redshift 集群或 Redshift Serverless 命名空间作为目标。

    注意

    如果指定数据仓库的资源策略或区分大小写设置配置不正确,RDS 会通知您。如果您收到此消息,可以选择为我修复,也可以手动配置它们。有关手动修复这些问题的说明,请参阅《Amazon Redshift 管理指南》中的为您的数据仓库开启区分大小写和为您的数据仓库配置授权

    修改预调配 Redshift 集群的区分大小写需要重启。在创建集成之前,必须完成重启,并且必须成功地将新的参数值应用于集群。

    如果您选择的源和目标位于不同的 Amazon Web Services 账户,则 Amazon RDS 无法为您修复这些设置。您必须导航到另一个账户,然后在 Amazon Redshift 中手动修复这些问题。

  11. 正确配置目标数据仓库后,选择下一步

  12. (可选)对于标签,向集成添加一个或多个标签。有关更多信息,请参阅 为 Amazon RDS 资源添加标签

  13. 对于加密,请指定您希望如何加密集成。默认情况下,RDS 会加密所有与 Amazon 拥有的密钥 的集成。要改为选择客户自主管理型密钥,请启用自定义加密设置并选择用于加密的 KMS 密钥。有关更多信息,请参阅 加密 Amazon Aurora 资源

    注意

    如果您指定自定义 KMS 密钥,则密钥策略必须允许对 Amazon Redshift 服务主体(redshift.amazonaws.com)执行 kms:CreateGrant 操作。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥策略

    (可选)添加加密上下文。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的加密内容

  14. 选择下一步

  15. 查看您的集成设置并选择创建零 ETL 集成。大约需要 30 分钟集成才能生效。

    如果创建失败,请参阅我无法创建零 ETL 集成以了解故障排除步骤。

集成在创建时状态为 Creating,而目标 Amazon Redshift 数据仓库的状态为 Modifying。在此期间,您无法查询数据仓库或对其进行任何配置更改。

成功创建集成后,集成和目标 Amazon Redshift 数据仓库的状态都更改为 Active

注意

在 Aurora PostgreSQL 零 ETL 集成预览版期间,只能通过 Amazon Web Services Management Console创建集成。您无法使用 Amazon CLI、Amazon RDS API 或任何 SDK。

要使用 Amazon CLI 创建零 ETL 集成,请使用带有以下选项的 create-integration 命令:

  • --integration-name – 指定集成的名称。

  • --source-arn – 指定将作为集成源的 Aurora 数据库集群的 ARN。

  • --target-arn – 指定将作为集成目标的 Amazon Redshift 数据仓库的 ARN。

对于 Linux、macOS 或 Unix:

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-cluster \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

对于 Windows:

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-cluster ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
注意

在 Aurora PostgreSQL 零 ETL 集成预览版期间,只能通过 Amazon Web Services Management Console创建集成。您无法使用 Amazon CLI、Amazon RDS API 或任何 SDK。

要使用 Amazon RDS API 创建零 ETL 集成,请结合以下参数使用 CreateIntegration 操作:

  • IntegrationName – 指定集成的名称。

  • SourceArn – 指定将作为集成源的 Aurora 数据库集群的 ARN。

  • TargetArn – 指定将作为集成目标的 Amazon Redshift 数据仓库的 ARN。

后续步骤

成功创建零 ETL 集成后,您必须在目标 Amazon Redshift 集群或工作组中创建目标数据库。然后,您可以开始向源 Aurora 数据库集群中添加数据,并在 Amazon Redshift 中对其进行查询。有关说明,请参阅在 Amazon Redshift 中创建目标数据库