> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 通过 AWS PrivateLink 将 MSK 暴露给 ClickPipes

> 通过 MSK multi-VPC 连接将私有 MSK 暴露给 ClickPipes 的配置步骤。

<div id="overview">
  ## 概述
</div>

本指南将指导你完成 **MSK multi-VPC** 的设置，以便与 [ClickPipes 反向专用终结点](/zh/integrations/clickpipes/networking/aws-privatelink#msk-multi-vpc) 配合使用。

ClickPipes 拥有客户端 VPC，并负责创建托管 VPC 连接。要建立网络连接，请在 MSK 集群上启用多 VPC 私有连接，并在集群策略中授权 ClickPipes AWS 账户。

<div id="requirements">
  ## 要求
</div>

您的 MSK 集群所在的 VPC 必须位于我们的某个 ClickPipes 区域。支持的区域列表请参见 [ClickPipes 区域](/zh/integrations/clickpipes/networking/aws-privatelink#aws-privatelink-regions)。

<div id="enabling-multi-vpc-connectivity">
  ## 启用多 VPC 连接
</div>

<Tabs>
  <Tab title="AWS 控制台" id="aws-console">
    1. 进入 MSK 集群。
       * 在 Amazon MSK Console 左侧导航栏中选择“Clusters”。
       * 选择要配置多 VPC 连接的目标 MSK 集群。
    2. 启用 MSK multi-VPC connectivity
       * 在 **Connectivity** 选项卡中，找到 **Multi-VPC connectivity** 部分。
       * 点击 **Edit**。
       * 启用 **Turn-on MSK multi-VPC connectivity** 选项。
       * 按照说明完成操作。
    3. 将 ClickPipes 账户主体添加到集群策略中
       * 进入 **Configuration** 选项卡。
       * 在 **Cluster policy** 部分点击 **Edit**。
       * 在 **IAM policy** 中加入 `arn:aws:iam::072088201116:root`。示例如下：
         ```json theme={null}
         {
             "Version": "2012-10-17",
             "Statement": [
                 {
                     "Effect": "Allow",
                     "Principal": {
                         "AWS": [
                             "arn:aws:iam::072088201116:root"
                         ]
                     },
                     "Action": [
                         "kafka:CreateVpcConnection",
                         "kafka:GetBootstrapBrokers",
                         "kafka:DescribeCluster",
                         "kafka:DescribeClusterV2"
                     ],
                     "Resource": "<MSK_CLUSTER_ARN>"
                 }
             ]
         }
         ```
  </Tab>

  <Tab title="Terraform" id="terraform-msk">
    为集群和多 VPC 连接启用 MSK 身份验证方法。以下示例使用 SASL/IAM；如需使用 SASL/SCRAM，请改为设置 `scram = true`。

    ```hcl theme={null}
    resource "aws_msk_cluster" "this" {
      # ... 现有配置 ...

      client_authentication {
        sasl {
          iam = true
        }
      }

      broker_node_group_info {
        # ... 现有配置 ...

        connectivity_info {
          vpc_connectivity {
            client_authentication {
              sasl {
                iam = true
              }
            }
          }
        }
      }
    }
    ```

    在 MSK 集群策略中授权 ClickPipes AWS 账户：

    ```hcl theme={null}
    resource "aws_msk_cluster_policy" "clickpipes" {
      cluster_arn = aws_msk_cluster.this.arn

      policy = jsonencode({
        Version = "2012-10-17"
        Statement = [{
          Sid       = "ClickPipesMultiVpc"
          Effect    = "Allow"
          Principal = { AWS = "arn:aws:iam::072088201116:root" }
          Action = [
            "kafka:CreateVpcConnection",
            "kafka:GetBootstrapBrokers",
            "kafka:DescribeCluster",
            "kafka:DescribeClusterV2",
          ]
          Resource = aws_msk_cluster.this.arn
        }]
      })
    }
    ```

    如果集群已有策略，添加 ClickPipes 权限时请保留其现有语句。
  </Tab>
</Tabs>

<Tip>
  集群 IAM 策略允许 ClickPipes 从 ClickPipes 侧向您的 MSK 集群发起连接。
  如果您想为 MSK 集群配置 IAM 身份验证，请参阅 [IAM 身份验证文档](/zh/integrations/clickpipes/kafka/best-practices#iam)。
</Tip>

<div id="creating-reverse-private-endpoint">
  ## 创建反向专用终结点
</div>

<Tabs>
  <Tab title="ClickPipes UI" id="clickpipes-ui">
    请按照 [ClickPipes 文档](/zh/integrations/clickpipes/networking/aws-privatelink#creating-clickpipe)中的步骤创建反向专用终结点。
  </Tab>

  <Tab title="Terraform" id="terraform-rpe">
    使用 [ClickHouse Terraform provider](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs/resources/clickpipes_reverse_private_endpoint) 创建反向专用终结点：

    ```hcl theme={null}
    resource "clickhouse_clickpipes_reverse_private_endpoint" "msk" {
      service_id         = var.clickhouse_service_id
      description        = "MSK multi-VPC reverse private endpoint"
      type               = "MSK_MULTI_VPC"
      msk_cluster_arn    = aws_msk_cluster.this.arn
      msk_authentication = "SASL_IAM" # Or "SASL_SCRAM"

      depends_on = [aws_msk_cluster_policy.clickpipes]
    }
    ```

    资源字段不可修改。修改任何字段都会删除并重新创建反向专用终结点。
  </Tab>
</Tabs>
