准备 Amazon MSK 源集群 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

准备 Amazon MSK 源集群

如果您已经为 MSK 复制器创建了 MSK 源集群,请确保它满足本节中描述的要求。否则,请按照以下步骤创建 MSK 预置或无服务器源集群。

创建跨区域和同区域的 MSK 复制器源集群的过程类似。差异将在以下过程中引用。

  1. 在源区域中开启了 IAM 访问控制的情况下创建 MSK 预置集群或无服务器集群。您的源集群必须至少有三个代理。

  2. 对于跨区域 MSK 复制器,如果源是预置集群,请在为 IAM 访问控制方案开启多 VPC 私有连接的情况下对其进行配置。请注意,开启多 VPC 时,不支持未经身份验证的身份验证类型。您不需要为连接到您的 MSK 集群的其他身份验证方案(mTLS)或连接到您的 MSK 集群的其他客户端的SASL/SCRAM). You can simultaneously use mTLS or SASL/SCRAM身份验证方案,开启多 VPC 私有连接。您可以在控制台集群详细信息网络设置中或使用 UpdateConnectivity API 配置多 VPC 私有连接。请参阅集群所有者开启多 VPC。如果您的源集群是 MSK Serverless 集群,则无需开启多 VPC 私有连接。

    对于同区域的 MSK 复制器,MSK 源集群不需要多 VPC 私有连接,并且其他客户端仍然可以使用未经身份验证的身份验证类型访问该集群。

  3. 对于跨区域 MSK 复制器,您必须将基于资源的权限策略附加到源集群。这允许 MSK 连接到此集群以复制数据。您可以使用下面的 CLI 或 Amazon 控制台步骤完成此操作。另请参阅 Amazon MSK 基于资源的策略。对于同区域的 MSK 复制器,您不需要执行此步骤。

Console: create resource policy

使用以下 JSON 更新源集群策略。将占位符替换为源集群的 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "kafka.amazonaws.com" ] }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "<sourceClusterARN>" } ] }

使用集群详细信息页面上的操作菜单下的编辑集群策略选项。

在控制台中编辑集群策略
CLI: create resource policy

如果您使用 Amazon 控制台创建源集群,并选择创建新 IAM 角色的选项,会将所需的信任策略 Amazon 附加到该角色。另一方面,如果您希望 MSK 使用现有 IAM 角色或您自己创建角色,请将以下信任策略附加到该角色,以便 MSK 复制器可以代入该角色。有关如何修改角色的信任关系的更多信息,请参阅修改角色

  1. 使用此命令获取 MSK 集群策略的当前版本。将占位符替换为实际的集群 ARN。

    aws kafka get-cluster-policy —cluster-arn <Cluster ARN> { "CurrentVersion": "K1PA6795UKM GR7", "Policy": "..." }
  2. 创建基于资源的策略,以允许 MSK 复制器访问您的源集群。使用以下语法作为模板,将占位符替换为实际的源集群 ARN。

    aws kafka put-cluster-policy --cluster-arn "<sourceClusterARN>" --policy '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "kafka.amazonaws.com" ] }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "<sourceClusterARN>" } ]