我想对跨 AWS 账户连接到 Amazon Managed Streaming for Apache Kafka (MSK) 集群失败的 AWS Glue 作业进行故障排除。
解决方法
检查 AWS Glue 作业是否可以连接到 Amazon MSK 集群,然后对 AWS Glue 作业的身份验证方法进行故障排除。
检查跨账户 AWS Glue 作业的连接
要验证 AWS Glue 作业是否可以连接到 Amazon MSK 集群,请完成以下步骤:
- 验证 AWS Glue 连接的网络访问控制列表(网络 ACL)是否允许流量流向跨账户 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon MSK 集群。
- 确认 Amazon MSK 集群的安全组允许在 Amazon MSK 集群的引导服务器端口上使用 AWS Glue 连接的子网 CIDR。
**注意:**AWS Glue 连接的安全组必须包含针对所需 TCP 端口的自引用入站规则。
- 检查您是否在 Amazon MSK 集群与 AWS Glue 连接的 VPC 或子网之间正确配置了 VPC 对等连接。
- 使用 Reachability Analyzer 检查组件是否会干扰 VPC 之间的连接。
- 在 AWS Glue 连接使用的相同子网和安全组中启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
使用会话管理器(AWS Systems Manager 的一项功能)或 SSH 客户端登录您的 EC2 实例。然后,运行以下测试:
telnet example-bootstrap-server-hostname example-bootstrap-server-port
nc -zv example-bootstrap-server-hostname example-bootstrap-server-port
dig example-bootstrap-server-hostname
**注意:**在上述命令中,请将示例值替换为您的值。如果未安装 telnet,请运行 sudo yum install telnet -y 进行安装。
如果输出中包含 connected 或 connections established,则表示 AWS Glue 作业的连接已经过验证。
对身份验证问题进行故障排除
要验证 AWS Glue 连接中的引导服务器 URL,请完成以下步骤:
- 从 Amazon MSK 获取引导代理。
- 打开 AWS Glue 控制台。
- 在导航窗格的 Data Catalog(数据目录)下,选择 Connections(连接)。您也可以在导航窗格中选择 Data connections(数据连接)。
- 在 Connections(连接)中,选择您的连接,然后选择 Actions(操作)。
- 在下拉列表中,选择 Edit(编辑)。
- 在 Connection access(连接访问)下,检查 Kafka 引导服务器 URL 是否与 Amazon MSK 控制台中的 URL 相匹配。
- 如果 URL 不匹配,请根据 Amazon MSK 集群使用的身份验证方法进行更新。使用与您的代理配置匹配的端口号:
对于 TLS/SSL,请使用端口 9094 在 AWS 内部进行访问,使用端口 9194 进行公共访问。
对于 SASL/SCRAM,请使用端口 9096 在 AWS 内部进行访问,使用端口 9196 进行公共访问。
- 选择 Save changes(保存更改)。
然后,根据 Amazon MSK 集群的身份验证方法执行以下操作。
SASL/SCRAM-SHA-512
使用 AWS Secrets Manager 验证您的用户名和密码。如果您使用 Secrets Manager 来存储您的凭证,请验证 AWS Glue 连接的子网是否可以到达 Secrets Manager 的端点。
TLS/SSL 客户端身份验证
要验证 Kafka 客户端的密钥库证书和密钥库密码或密钥密码,请运行以下命令:
keytool -list -v -keystore /pathtocert/kafka.client.keystore.jks -storepass 123456
检查输出中是否包含 Amazon MSK 集群使用的 AWS Private Certificate Authority (AWS Private CA) 证书。
如果输出中不包含此证书,请完成设置客户端以使用身份验证中的步骤 5-11 来创建新的密钥库。
**重要事项:**请使用 Amazon MSK 集群使用的相同私有证书为每个客户端创建新的密钥库。
将 kafka.client.keystore.jks 证书上传到 Amazon Simple Storage Service (Amazon S3)。然后,使用证书的 S3 路径配置 AWS Glue Kafka 连接。
IAM 身份验证
验证 AWS Glue 作业的 AWS Identity and Access Management (IAM) 角色对 Amazon MSK 集群是否具有正确的授权策略。
相关信息
创建 Kafka 连接
在 AWS Glue 中流式处理 ETL 作业