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

创建 Aurora 与 Amazon SageMaker 智能湖仓的零 ETL 集成

在创建 Aurora 与 Amazon SageMaker 智能湖仓的零 ETL 集成时,您应指定源 Aurora 数据库集群和目标 Amazon Glue 托管目录。您还可以自定义加密设置和添加标签。Aurora 在源数据库集群与其目标之间创建集成。在集成处于活动状态后,您插入到源数据库集群中的任何数据都将复制到配置的目标中。

先决条件

在创建与 Amazon SageMaker 智能湖仓的零 ETL 集成之前,必须创建源数据库集群和目标 Amazon Glue 托管目录。您还必须通过将数据库集群添加为授权的集成源来支持复制到目录。

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

所需的权限

创建与 Amazon SageMaker 智能湖仓的零 ETL 集成需要具有某些 IAM 权限。至少您需要具有执行以下操作的权限:

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

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

  • 创建到目标 Amazon Glue 托管目录的入站集成。

  • 访问 Amazon Glue 托管目录使用的 Amazon S3 存储桶。

  • 如果配置了自定义加密,则使用 Amazon KMS 密钥进行加密。

  • 将资源注册到 Lake Formation 中。

  • 将资源策略放在 Amazon Glue 托管目录上以对入站集成进行授权。

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

此外,您必须在目标 Amazon Glue 托管目录上配置资源策略以便对入站集成进行授权。使用以下 Amazon CLI 命令来应用资源策略。

aws glue put-resource-policy \ --policy-in-json '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:rds:region:account_id:db:source_name" } } }, { "Effect": "Allow", "Principal": { "AWS": "account_id" }, "Action": ["glue:CreateInboundIntegration"], "Resource": ["arn:aws:glue:region:account_id:catalog/catalog_name"] } ] }' \ --region region
注意

Glue 目录 Amazon 资源名称(ARN)的格式如下:

  • Glue 目录:arn:aws:glue:{region}:{account-id}:catalog/catalog-name

选择不同账户中的目标 Amazon Glue 托管目录

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

该角色必须具有以下权限,这些权限支持用户查看目标账户中可用的 Amazon Glue 目录。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "glue:GetCatalog" ], "Resource":[ "*" ] } ] }

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

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

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

创建与 Amazon SageMaker 智能湖仓的零 ETL 集成

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 创建与 Amazon SageMaker 智能湖仓的零 ETL 集成。

重要

与 Amazon SageMaker 智能湖仓的零 ETL 集成不支持刷新或重新同步操作。如果在创建集成后遇到与集成相关的问题,必须删除此集成并创建一个新集成。

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

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

  3. 选择创建零 ETL 集成

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

  5. 选择下一步

  6. 对于,选择数据将源自其中的 Aurora 数据库集群

    注意

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

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

  7. (可选)选择自定义数据筛选选项并向您的集成添加数据筛选条件。您可以使用数据筛选条件来定义复制到目标 Amazon SageMaker 智能湖仓的范围。有关更多信息,请参阅 Aurora 零 ETL 集成的数据筛选

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

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

    1. (可选)要为 Amazon SageMaker 智能湖仓目标使用不同的 Amazon Web Services 账户,请选择指定不同的账户。然后,输入有权显示 Amazon Glue 目录的 IAM 角色的 ARN。有关创建 IAM 角色的说明,请参阅选择不同账户中的目标 Amazon Glue 托管目录

    2. 对于 Amazon Glue 目录,选择从源数据库集群中复制的数据的目标。可以选择使用现有 Amazon Glue 托管目录作为目标。

    3. 目标 IAM 角色需要对目标目录的描述权限,并且必须具有以下权限:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "glue:GetCatalog", "Resource": [ "arn:aws:glue:region:account-id:catalog/*", "arn:aws:glue:region:account-id:catalog" ] } ] }

      目标 IAM 角色必须拥有以下信任关系:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    4. 您必须使用在步骤 3b:为 Amazon SageMaker 零 ETL 集成创建 Amazon Glue 目录中创建的 Lake Formation 管理员角色,来为目标 IAM 角色授予对目标 Amazon Glue 托管目录的描述权限。

    注意

    如果指定 Amazon Glue 托管目录的资源策略或配置设置未得以正确配置,RDS 会通知您。如果您收到此消息,可以选择为我修复,也可以手动配置它们。

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

  10. 在正确配置了目标 Amazon Glue 托管目录后,选择下一步

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

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

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

    注意

    除了您添加的任何加密上下文对外,Amazon RDS 还会添加以下加密上下文对:

    • aws:glue:integration:arn - IntegrationArn

    • aws:servicename:id - glue

    这会将您可以添加的加密上下文对总数从 8 减少到 6,并增加授予约束条件的总字符限制。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 Using grant constraints

  13. 选择下一步

  14. 查看您的集成设置并选择创建零 ETL 集成

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

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

成功创建集成后,集成和目标 Amazon SageMaker 智能湖仓的状态都更改为 Active

要使用 Amazon CLI 来准备要进行零 ETL 集成的目标 Amazon Glue 托管目录,必须首先使用带有以下选项的 create-integration-resource-property 命令:

  • --resource-arn:指定将成为集成目标的 Amazon Glue 托管目录的 ARN。

  • --target-processing-properties:指定 IAM 角色的 ARN 以访问目标 Amazon Glue 托管目录

aws glue create-integration-resource-property --region us-east-1 --resource-arn arn:aws:glue:region:account_id:catalog/catalog_name \ --target-processing-properties '{"RoleArn" : "arn:aws:iam::account_id:role/TargetIamRole"}'

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

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

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

  • --target-arn:指定将成为集成目标的 Amazon Glue 托管目录的 ARN。

对于 Linux、macOS 或 Unix:

aws rds create-integration \ --integration-name my-sagemaker-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name

对于 Windows:

aws rds create-integration ^ --integration-name my-sagemaker-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:glue:{region}:{account-id}:catalog/catalog-name

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

注意

目录名称限制为 19 个字符。如果要将 IntegrationName 参数用作目录名称,请确保它符合此要求。

  • IntegrationName – 指定集成的名称。

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

  • TargetArn:指定将成为集成目标的 Amazon Glue 托管目录的 ARN。

使用客户自主管理型密钥加密集成

如果您在创建与 Amazon SageMaker 的集成时指定自定义 KMS 密钥而不是 Amazon 拥有的密钥,则密钥策略必须为 SageMaker Unified Studio 服务主体提供对 CreateGrant 操作的访问权限。此外,它必须允许当前用户执行 DescribeKeyCreateGrant 操作。

以下示例策略演示了如何提供密钥策略中所需的权限。它包括用于进一步缩小权限范围的上下文键。

{ "Version": "2012-10-17", "Id": "Key policy", "Statement": [ { "Sid": "Enables IAM user permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Glue service principal to add a grant to an Amazon KMS key", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}":"{context-value}" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current user or role to add a grant to a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:role/{role-name}" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService": "rds.us-east-1.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current uer or role to retrieve information about a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-ID}:role/{role-name}" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }

有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥策略

后续步骤

在成功创建与 Amazon SageMaker 的零 ETL 集成后,您可以开始向源 Aurora 数据库集群添加数据,并在 Amazon SageMaker 智能湖仓中查询这些数据。数据将自动复制,并可供分析和机器学习工作负载使用。