RedShift未通过Python脚本连接到主机

编程入门 行业动态 更新时间:2024-10-27 16:32:33
本文介绍了RedShift未通过Python脚本连接到主机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我目前在S3存储桶中有一个.csv文件,我想使用Python脚本将其附加到RedShift数据库中的表中。我有一个单独的文件解析器并上传到S3,工作正常。

我拥有的用于连接/复制到表中的代码如下所示。我收到以下错误消息:

OperationalError:(ological copg2.OperationalError)无法连接到服务器:连接超时(0x0000274C/10060) 服务器是否在主机"redshift_cluster_name.unique_here.region.redshift.amazonaws"(18.221.51.45)上运行并接受 端口5439上的TCP/IP连接?

我可以确认以下几点:

  • 端口为5439

  • 未加密

  • 群集名称/数据库名称/用户名/密码均正确

  • 可公开访问设置为"是"

我应该修复什么以确保我可以将S3中的文件连接到RedShift?感谢所有您能提供的帮助。

我还查看了堆栈溢出和ServerFault,但这些似乎要么是针对MySQL的RedShift,要么是解决方案(如链接的ServerFaultCIDR解决方案)不起作用。

感谢您的帮助!

DATABASE = "db" USER = "user" PASSWORD = "password" HOST = "redshift_cluster_name.unique_here.region.redshift.amazonaws" PORT = "5439" SCHEMA = "public" S3_FULL_PATH = 's3://bucket/file.csv' #ARN_CREDENTIALS = 'arn:aws:iam::aws_id:role/myRedshiftRole' REGION = 'region' ############ CONNECTING AND CREATING SESSIONS ############ connection_string = f"redshift+psycopg2://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}" engine = sa.create_engine(connection_string) session = sessionmaker() session.configure(bind=engine) s = session() SetPath = f"SET search_path TO {SCHEMA}" s.execute(SetPath) ########################################################### ############ RUNNING COPY ############ copy_command = f ''' copy category from '{S3_FULL_PATH}' credentials 'aws_iam_role={ARN_CREDENTIALS}' delimiter ',' region '{REGION}'; ''' s.execute(copy_command) smit() ###################################### #################CLOSE SESSION################ s.close() ############################################## 推荐答案

通过Python程序连接需要与从SQL客户端连接相同的连接。

我创建了一个新群集,以便可以为您记录该过程。

以下是我采取的步骤:

  • 创建了CIDR为10.0.0.0/16的私有网络。我并不需要再创建一个私有网络,但是我希望避免之前的配置出现问题。
  • 在私有网络中创建了CIDR为10.0.0.0/24的子网。
  • 创建网关并附加到私有网络。
  • 已编辑默认路由表以将0.0.0.0/0流量发送到Internet网关。(我只创建公有子网,私有子网不需要路由表。)
  • 使用我创建的单个子网创建了红移群集子网组。
  • 将单节点红移群集启动到群集子网组。Publicly accessible = Yes,默认安全组。
  • 返回私有网络控制台编辑默认安全组。添加了从任何位置进行红移的入站规则。
  • 等待群集准备就绪。
  • 然后我使用DbVisualizer登录到数据库。成功!

以上步骤创建了一个公开可用的RedShift群集,我已从Internet上的计算机连接到该群集。

更多推荐

RedShift未通过Python脚本连接到主机

本文发布于:2023-10-23 00:27:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1519196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:连接到   脚本   主机   RedShift   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!