AWS Glue连接托管OpenSearch集群遇阻,求技术解决方案
问题解答
1. 错误是否提示存在额外的安全配置问题?
是的,错误核心指向网络连通性缺失或HTTPS配置不完整:
- 先检查Glue任务的VPC配置:必须确保Glue任务部署在与OpenSearch集群相同的VPC,子网、安全组配置需匹配——OpenSearch的安全组要允许Glue所在子网的443端口入站流量。
- 其次,当前配置未明确启用SSL加密,Spark无法建立HTTPS连接,导致无法探测OpenSearch版本,需补充
es.net.ssl=true参数。
2. 三种尝试方式的正确方向判断
- 方式1(更新elasticsearch-spark JAR):方向正确,仅缺少关键的SSL配置,解决网络连通问题后即可正常使用。
- 方式2(AWS Marketplace连接器):方向正确,该连接器适配Glue 2.0与OpenSearch 1.2版本,问题出在网络或HTTPS配置缺失,而非方式本身。
- 方式3(请求签名):方向错误。请求签名适用于启用细粒度访问控制或公开访问的场景,对于VPC内无细粒度控制的OpenSearch集群完全不需要,且批量写入场景下Spark连接器的效率远高于直接API调用。
3. 未启用细粒度访问控制时是否需要HTTP请求签名?
不需要。当OpenSearch未启用细粒度访问控制时,访问权限由VPC安全组策略+IAM角色权限共同管控:只要Glue任务在允许访问的VPC子网内,且Glue角色已拥有OpenSearch的相关操作权限(如es:ESHttpPut),就无需对HTTP请求进行签名。
补充修正后的方式1示例代码
df.write.format( 'org.elasticsearch.spark.sql' ).mode( 'overwrite' ).option( 'es.nodes', 'full_https_endpoint' ).option( 'es.port', 443 ).option( 'es.resource', '%s' % ('index_name'), ).option( 'es.nodes.wan.only', True ).option( 'es.net.ssl', True # 新增SSL启用配置 ).option( 'es.net.ssl.cert.allow.self.signed', True # 若使用OpenSearch默认自签名证书需添加 ).save()
内容的提问来源于stack exchange,提问作者Pops
相关产品推荐
相关产品推荐

