配置零 ETL 集成目标
在配置零 ETL 集成的目标时,AWS 提供了多种选项。目标可能是加密的 Amazon Redshift 数据仓库或 Amazon SageMaker 智能湖仓目录。
在选择零 ETL 集成的目标之前,您需要配置以下其中一个目标资源。
零 ETL 集成中目标的配置选项包括:
配置了常规 Amazon S3 存储的 Amazon SageMaker 智能湖仓目录和数据库。请参阅为 Amazon SageMaker 智能湖仓目录配置常规 S3 存储。
配置了 Amazon S3 表类数据存储服务存储桶的 Amazon SageMaker 智能湖仓目录。请参阅将 Amazon S3 表类数据存储服务配置为目标。
配置了 Amazon Redshift 托管存储的 Amazon SageMaker Lakehouse 目录。请参阅为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储。
由 Redshift 命名空间标识的 Amazon Redshift 数据仓库。请参阅配置 Amazon Redshift 数据仓库目标。
注意
创建零 ETL 集成后,便无法修改其目标。
为 Amazon SageMaker 智能湖仓目录配置常规 S3 存储
本节介绍了在零 ETL 集成中,将常规 Amazon S3 存储桶配置为 Amazon SageMaker 智能湖仓目录目标存储的先决条件和设置步骤。
设置集成的先决条件
在创建采用了常规 S3 存储的 Amazon SageMaker 智能湖仓目录的零 ETL 集成之前,需要完成以下设置任务:
设置 AWS Glue 数据库
提供 Catalog RBAC 策略
创建目标 IAM 角色
为 Amazon SageMaker 智能湖仓目录配置常规 Amazon S3 存储后,就可以继续执行 配置与目标的集成 完成集成设置。
将 Amazon S3 表类数据存储服务配置为目标
本节介绍了将 Amazon S3 表类数据存储服务配置为零 ETL 集成目标的先决条件和设置步骤。
设置集成的先决条件
在创建作为目标的 Amazon S3 表类数据存储服务的零 ETL 集成之前,需要完成以下设置任务:
设置 Amazon S3 表类数据存储服务存储桶
提供 Catalog RBAC 策略
创建目标 IAM 角色
设置 Amazon S3 表类数据存储服务存储桶
按照开始使用 Amazon S3 表类数据存储服务中的说明,在您的账户中创建 S3 表类数据存储服务存储桶。
按照以下说明启用 Analytics 与 S3 表类数据存储服务存储桶的集成:AWS 服务与 Amazon S3 表类数据存储服务集成。
提供目录 RBAC 策略
必须向目录 RBAC 策略添加以下权限才能进行源和 Amazon S3 表类数据存储服务目录目标之间的集成。
目标 AWS Glue 目录资源策略需要包含 Glue 服务权限才能进行 AuthorizeInboundIntegration。此外,创建集成的源主体或目标 AWS Glue 资源策略需要获得 CreateInboundIntegration 权限。
注意
对于跨账户场景,源主体和目标 AWS Glue 目录资源策略都需要在资源中包含 glue:CreateInboundIntegration 权限。
{ "Version": "2012-10-17", "Statement": [ { // Optional for same account but mandatory for cross account scenarios // Allow Alice to create Integration on Target Catalog "Principal": { "AWS": [ "arn:aws:iam::<source-account-id>:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:CreateInboundIntegration" ], "Resource": [ "arn:aws:glue:<region>:<Target-Account-Id>:catalog/<s3tablescatalog>/*" ], "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:dynamodb:<region>:<Account>:table/<table-name>" } } }, { // Required: Allow Glue to Authorize the Inbound Integration on behalf of Bob "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": [ "arn:aws:glue:<region>:<Target-Account-Id>:catalog/<s3tablescatalog>/*" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:<region>:<account-id>:table/<table-name>" } } } ] }
注意
将 <s3tablescatalog>
替换为 S3 表类数据存储服务目录名称。
创建目标 IAM 角色
创建具有以下权限和信任关系的目标 IAM 角色:
示例 IAM 策略:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3tables:ListTableBuckets", "s3tables:GetTableBucket", "s3tables:GetTableBucketEncryption", "s3tables:GetNamespace", "s3tables:CreateNamespace", "s3tables:ListNamespaces", "s3tables:CreateTable", "s3tables:GetTable", "s3tables:GetTableEncryption", "s3tables:ListTables", "s3tables:GetTableMetadataLocation", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": "arn:aws:s3tables:<region>:<account-id>:bucket/*", "Effect": "Allow" }, { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "AWS/Glue/ZeroETL" } }, "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow" } ] }
以目标 IAM 角色添加下面的信任策略以允许 AWS Glue 服务代入该角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意
确保 S3 表类数据存储服务存储桶资源策略中没有针对此目标 IAM 角色的显式拒绝声明。显式拒绝将覆盖任何“允许”权限并阻止集成正常运行。
为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储
本节介绍了将采用 Amazon Redshift 托管存储 (RMS) 的 Amazon SageMaker 智能湖仓目录配置为零 ETL 集成目标的先决条件和设置步骤。
设置集成的先决条件
在创建采用了 Redshift 托管存储的 Amazon SageMaker 智能湖仓目录的零 ETL 集成之前,需要完成以下设置任务:
设置 Amazon Redshift 集群或 Serverless 工作组
向 Lake Formation 注册 Amazon Redshift 集成
在 Lake Formation 中创建托管目录
配置 IAM 权限
设置 Amazon Redshift 托管存储
为零 ETL 集成设置 Amazon Redshift 托管存储:
创建或使用现有的 Amazon Redshift 集群或 Serverless 工作组。要成功进行集成,务必确保目标 Amazon Redshift 工作组或集群启用
enable_case_sensitive_identifier
参数。有关启用区分大小写的更多信息,请参阅《Amazon Redshift 管理指南》中的为您的数据仓库开启区分大小写。将 Redshift 的集成注册到 AWS Lake Formation 中的目录中。请参阅 Registering Amazon Redshift clusters and namespaces to the AWS Glue Data Catalog。
在 AWS Lake Formation 中创建联合目录或托管目录。有关更多信息,请参阅:
为目标角色配置 IAM 权限。该角色需要拥有权限才能同时访问 Redshift 和 Lake Formation 资源。该角色至少应具有:
访问 Redshift 集群或工作组的权限
访问 Lake Formation 目录的权限
在目录中创建和管理表的权限
CloudWatch 和 CloudWatch Logs 监控权限
为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储后,就可以继续执行 配置与目标的集成 完成集成设置。
配置 Amazon Redshift 数据仓库目标
本节介绍了将 Amazon Redshift 数据仓库配置为零 ETL 集成目标的先决条件和设置步骤。
设置集成的先决条件
在创建 Amazon Redshift 数据仓库目标的零 ETL 集成之前,需要完成以下设置任务:
设置 Amazon Redshift 集群或 Serverless 工作组
配置区分大小写
配置 IAM 权限
设置 Amazon Redshift 数据仓库
为零 ETL 集成设置 Amazon Redshift 数据仓库:
导航到Amazon Redshift控制台
,然后单击创建集群或使用现有的集群。对于 Amazon Redshift Serverless 工作组,单击创建工作组。 如果要创建新的集群,请选择适当的集群大小,并确保集群已加密。对于 Serverless,请根据要求配置工作组设置。
要成功进行集成,务必确保目标 Amazon Redshift 工作组或集群启用
enable_case_sensitive_identifier
参数。有关启用区分大小写的更多信息,请参阅《Amazon Redshift 管理指南》中的为您的数据仓库开启区分大小写。配置 IAM 权限以便进行零 ETL 集成,从而访问 Amazon Redshift 数据仓库。需要创建具有以下权限的 IAM 角色:
访问 Amazon Redshift 集群或工作组的权限
在 Amazon Redshift 中创建和管理数据库和表的权限
CloudWatch 和 Amazon CloudWatch Logs 监控权限
在 Amazon Redshift 工作组或集群设置完成后,您需要为零 ETL 集成配置数据仓库。有关更多信息,请参阅《Amazon Redshift 管理指南》中的开始使用零 ETL 集成。
注意
将 Amazon Redshift 数据仓库用作目标时,集成会在指定数据库中创建一个存储复制数据的架构。该架构的名称源自集成名称。
配置 Amazon Redshift 数据仓库后,就可以继续执行 配置与目标的集成 完成集成设置。
配置与目标的集成
在配置目标资源、选择连接并指定源 IAM 角色后,请按照以下步骤完成集成设置:
指定在上述步骤中配置的目标。
选择 AWS Glue 自动修复此问题选项。对于 Amazon Redshift 目标,这将:
在 Amazon Redshift 集群或 Serverless 工作组上应用授权的服务主体。
将授权的 AWS Glue 源 ARN 应用于 Amazon Redshift 集群或 Serverless 工作组。
将新的参数组与
enable_case_sensitive_identifier = true
关联。
提供集成名称,然后选择创建并启动集成。
一旦您的集成处于活动状态,请导航到集成详细信息页面并选择通过集成创建数据库。
最后,您可以导航到 Redshift 查询编辑器,并连接到您的数据库来验证快照和增量数据。
注意
命名空间或目录名称中只能使用小写字母数字字符和下划线。这与 AWS Glue Data Catalog 不同,后者允许创建具有任何名称(包括特殊字符)的数据库。