

# 配置零 ETL 集成目标
<a name="zero-etl-target"></a>

在配置零 ETL 集成的目标时，AWS 提供了多种选项。目标可能是加密的 Amazon Redshift 数据仓库或 Amazon SageMaker 智能湖仓目录。

在选择零 ETL 集成的目标之前，您需要配置以下其中一个目标资源。

零 ETL 集成中目标的配置选项包括：
+ 配置了常规 Amazon S3 存储的 Amazon SageMaker 智能湖仓目录和数据库。请参阅[为 Amazon SageMaker 智能湖仓目录配置常规 S3 存储](#zero-etl-config-target-regular-s3)。
+ 配置了 Amazon S3 表类数据存储服务存储桶的 Amazon SageMaker 智能湖仓目录。请参阅[将 Amazon S3 表类数据存储服务配置为目标](#zero-etl-config-target-s3-tables)。
+ 配置了 Amazon Redshift 托管存储的 Amazon SageMaker Lakehouse 目录。请参阅[为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储](#zero-etl-config-target-redshift-managed-storage)。
+ 由 Redshift 命名空间标识的 Amazon Redshift 数据仓库。请参阅[配置 Amazon Redshift 数据仓库目标](#zero-etl-config-target-redshift-data-warehouse)。

**注意**  
 创建零 ETL 集成后，便无法修改其目标。

## 为 Amazon SageMaker 智能湖仓目录配置常规 S3 存储
<a name="zero-etl-config-target-regular-s3"></a>

本节介绍了在零 ETL 集成中，将常规 Amazon S3 存储桶配置为 Amazon SageMaker 智能湖仓目录目标存储的先决条件和设置步骤。

### 设置集成的先决条件
<a name="zero-etl-config-target-regular-s3-prerequisites"></a>

在创建采用了常规 S3 存储的 Amazon SageMaker 智能湖仓目录的零 ETL 集成之前，需要完成以下设置任务：

1. 设置 AWS Glue 数据库

1. 提供 Catalog RBAC 策略

1. 创建目标 IAM 角色

为 Amazon SageMaker 智能湖仓目录配置常规 Amazon S3 存储后，就可以继续执行 [配置与目标的集成](#zero-etl-config-target-configuring-the-integration) 完成集成设置。

## 将 Amazon S3 表类数据存储服务配置为目标
<a name="zero-etl-config-target-s3-tables"></a>

本节介绍了将 Amazon S3 表类数据存储服务配置为零 ETL 集成目标的先决条件和设置步骤。

### 设置集成的先决条件
<a name="zero-etl-config-target-s3-tables-prerequisites"></a>

在创建作为目标的 Amazon S3 表类数据存储服务的零 ETL 集成之前，需要完成以下设置任务：

1. 设置 Amazon S3 表类数据存储服务存储桶

1. 提供 Catalog RBAC 策略

1. 创建目标 IAM 角色

### 设置 Amazon S3 表类数据存储服务存储桶
<a name="zero-etl-config-target-s3-tables-bucket"></a>

1. 按照[开始使用 Amazon S3 表类数据存储服务](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-getting-started.html)中的说明，在您的账户中创建 S3 表类数据存储服务存储桶。

1. 按照以下说明启用 Analytics 与 S3 表类数据存储服务存储桶的集成：[AWS 服务与 Amazon S3 表类数据存储服务集成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html#table-integration-procedures)。

### 提供目录 RBAC 策略
<a name="zero-etl-config-target-s3-tables-rbac"></a>

必须向目录 RBAC 策略添加以下权限才能进行源和 Amazon S3 表类数据存储服务目录目标之间的集成。

目标 AWS Glue 目录资源策略需要包含 Glue 服务权限才能进行 AuthorizeInboundIntegration。此外，创建集成的源主体或目标 AWS Glue 资源策略需要获得 CreateInboundIntegration 权限。

**注意**  
对于跨账户场景，源主体和目标 AWS Glue 目录资源策略都需要在资源中包含 glue:CreateInboundIntegration 权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Principal": {
        "AWS": [
        	"arn:aws:iam::123456789012:user/Alice"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:CreateInboundIntegration"
      ],
      "Resource": [
	      "arn:aws:glue:us-east-1:111122223333:catalog/<s3tablescatalog>/*"
      ],
      "Condition": {
        "StringLike": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    },
    {
      "Principal": {
        "Service": [
          "glue.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:AuthorizeInboundIntegration"
      ],
      "Resource": [
      "arn:aws:glue:us-east-1:111122223333:catalog/<s3tablescatalog>/*"
      ],
      "Condition": {
        "StringEquals": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    }
  ]
}
```

------

**注意**  
将 `<s3tablescatalog>` 替换为 S3 表类数据存储服务目录名称。

### 创建目标 IAM 角色
<a name="zero-etl-config-target-s3-tables-iam"></a>

创建具有以下权限和信任关系的目标 IAM 角色：

示例 IAM 策略：

------
#### [ JSON ]

****  

```
{
  "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:us-east-1:111122223333: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 服务代入该角色：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "glue.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

**注意**  
确保 S3 表类数据存储服务存储桶资源策略中没有针对此目标 IAM 角色的显式拒绝声明。显式拒绝将覆盖任何“允许”权限并阻止集成正常运行。

## 为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储
<a name="zero-etl-config-target-redshift-managed-storage"></a>

本节介绍了将采用 Amazon Redshift 托管存储 (RMS) 的 Amazon SageMaker 智能湖仓目录配置为零 ETL 集成目标的先决条件和设置步骤。

### 设置集成的先决条件
<a name="zero-etl-config-target-rms-prerequisites"></a>

在创建采用了 Redshift 托管存储的 Amazon SageMaker 智能湖仓目录的零 ETL 集成之前，需要完成以下设置任务：

1. 设置 Amazon Redshift 集群或 Serverless 工作组

1. 向 Lake Formation 注册 Amazon Redshift 集成

1. 在 Lake Formation 中创建托管目录

1. 配置 IAM 权限

### 设置 Amazon Redshift 托管存储
<a name="zero-etl-config-target-rms-setup"></a>

为零 ETL 集成设置 Amazon Redshift 托管存储：

1. 创建或使用现有的 Amazon Redshift 集群或 Serverless 工作组。要成功进行集成，务必确保目标 Amazon Redshift 工作组或集群启用 `enable_case_sensitive_identifier` 参数。有关启用区分大小写的更多信息，请参阅《Amazon Redshift 管理指南》中的[为您的数据仓库开启区分大小写](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html)。

1. 将 Redshift 的集成注册到 AWS Lake Formation 中的目录中。请参阅 [Registering Amazon Redshift clusters and namespaces to the AWS Glue Data Catalog](https://docs.aws.amazon.com/redshift/latest/dg/iceberg-integration-register.html)。

1. 在 AWS Lake Formation 中创建联合目录或托管目录。有关更多信息，请参阅：
   +  [ Bringing Amazon Redshift data into the AWS Glue Data Catalog ](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-namespaces-datacatalog.html) 
   +  [ Creating an Amazon Redshift managed catalog in the AWS Glue Data Catalog ](https://docs.aws.amazon.com/lake-formation/latest/dg/create-rms-catalog.html) 

1. 为目标角色配置 IAM 权限。该角色需要拥有权限才能同时访问 Redshift 和 Lake Formation 资源。该角色至少应具有：
   + 访问 Redshift 集群或工作组的权限
   + 访问 Lake Formation 目录的权限
   + 在目录中创建和管理表的权限
   + CloudWatch 和 CloudWatch Logs 监控权限

为 Amazon SageMaker 智能湖仓目录配置 Amazon Redshift 托管存储后，就可以继续执行 [配置与目标的集成](#zero-etl-config-target-configuring-the-integration) 完成集成设置。

## 配置 Amazon Redshift 数据仓库目标
<a name="zero-etl-config-target-redshift-data-warehouse"></a>

本节介绍了将 Amazon Redshift 数据仓库配置为零 ETL 集成目标的先决条件和设置步骤。

### 设置集成的先决条件
<a name="zero-etl-config-target-redshift-prerequisites"></a>

在创建 Amazon Redshift 数据仓库目标的零 ETL 集成之前，需要完成以下设置任务：

1. 设置 Amazon Redshift 集群或 Serverless 工作组

1. 配置区分大小写

1. 配置 IAM 权限

### 设置 Amazon Redshift 数据仓库
<a name="zero-etl-config-target-redshift-setup"></a>

为零 ETL 集成设置 Amazon Redshift 数据仓库：

1. 导航到[Amazon Redshift控制台](https://console.aws.amazon.com/redshiftv2/home)，然后单击**创建集群**或使用现有的集群。对于 Amazon Redshift Serverless 工作组，单击**创建工作组**。

1. 如果要创建新的集群，请选择适当的集群大小，并确保集群已加密。对于 Serverless，请根据要求配置工作组设置。

1. 要成功进行集成，务必确保目标 Amazon Redshift 工作组或集群启用 `enable_case_sensitive_identifier` 参数。有关启用区分大小写的更多信息，请参阅《Amazon Redshift 管理指南》中的[为您的数据仓库开启区分大小写](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html)。

1. 配置 IAM 权限以便进行零 ETL 集成，从而访问 Amazon Redshift 数据仓库。需要创建具有以下权限的 IAM 角色：
   + 访问 Amazon Redshift 集群或工作组的权限
   + 在 Amazon Redshift 中创建和管理数据库和表的权限
   + CloudWatch 和 Amazon CloudWatch Logs 监控权限

1. 在 Amazon Redshift 工作组或集群设置完成后，您需要为零 ETL 集成配置数据仓库。有关更多信息，请参阅《Amazon Redshift 管理指南》中的[开始使用零 ETL 集成](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html)。

**注意**  
将 Amazon Redshift 数据仓库用作目标时，集成会在指定数据库中创建一个存储复制数据的架构。该架构的名称源自集成名称。

配置 Amazon Redshift 数据仓库后，就可以继续执行 [配置与目标的集成](#zero-etl-config-target-configuring-the-integration) 完成集成设置。

## 配置与目标的集成
<a name="zero-etl-config-target-configuring-the-integration"></a>

在配置目标资源、选择连接并指定源 IAM 角色后，请按照以下步骤完成集成设置：

1. 指定在上述步骤中配置的目标。

1. 选择 AWS Glue **自动修复此问题**选项。对于 Amazon Redshift 目标，这将：
   + 在 Amazon Redshift 集群或 Serverless 工作组上应用授权的服务主体。
   + 将授权的 AWS Glue 源 ARN 应用于 Amazon Redshift 集群或 Serverless 工作组。
   + 将新的参数组与 `enable_case_sensitive_identifier = true` 关联。  
![\[屏幕截图显示在零 ETL 集成中选择目标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/zero-etl-target-selection.png)

1. 提供集成名称，然后选择**创建并启动集成**。

1. 一旦您的集成处于活动状态，请导航到集成详细信息页面并选择**通过集成创建数据库**。

1. 最后，您可以导航到 Redshift 查询编辑器，并连接到您的数据库来验证快照和增量数据。

**注意**  
命名空间或目录名称中只能使用小写字母数字字符和下划线。这与 AWS Glue Data Catalog 不同，后者允许创建具有任何名称（包括特殊字符）的数据库。