如何将数据从AWS Postgres RDS传输到S3(然后是Redshift)?

如何将数据从AWS Postgres RDS传输到S3(然后是Redshift)?

问题描述:

我正在使用AWS数据管道服务将数据从RDS MySql数据库传输到s3,然后到Redshift,这很好地工作。如何将数据从AWS Postgres RDS传输到S3(然后是Redshift)?

但是,我也有数据生活在RDS Postres实例中,我想以同样的方式管道,但我很难设置jdbc连接。如果这不受支持,是否有解决方法?

"connectionString": "jdbc:postgresql://THE_RDS_INSTANCE:5432/THE_DB” 

这还不行。 aws没有构建/发布功能来很好地连接到postgres。尽管如此,你可以在shellcommandactivity中执行它。你可以写一些ruby或python代码来做到这一点,并使用scriptUri将其放在s3的脚本中。你也可以直接编写一个psql命令将表转储到一个csv,然后在该活动节点中用“staging:true”将它传递给OUTPUT1_STAGING_DIR。

是这样的:

{ 
    "id": "DumpCommand", 
    "type": "ShellCommandActivity", 
    "runsOn": { "ref": "MyEC2Resource" }, 
    "stage": "true", 
    "output": { "ref": "S3ForRedshiftDataNode" }, 
    "command": "PGPASSWORD=password psql -h HOST -U USER -d DATABASE -p 5432 -t -A -F\",\" -c \"select blah_id from blahs\" > ${OUTPUT1_STAGING_DIR}/my_data.csv" 
} 

我没跑这来验证,因为它旋转起来管道中的痛苦:(所以仔细检查逃逸的命令

  • 利弊。 :超级简单,不需要额外的脚本文件上传到S3
  • 缺点:不完全安全。你的数据库密码将通过电线传输而不加密。

研究刚刚在参数化模板数据管道上启动的新工具:http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-custom-templates.html。它看起来会允许加密任意参数。

+0

作为一个快速更新:在PostgreSQL现在支持SSL,所以如果你在一个新版本确保设置ssl = true,以便设置加密。 – 2016-07-25 17:30:05

AWS现在允许合作伙伴执行接近实时的RDS - > Redshift插入。

https://aws.amazon.com/blogs/aws/fast-easy-free-sync-rds-to-redshift/

+3

截至2015年2月25日,上述链接仅支持MySQL - > Redshift,并且不支持OP询问的Postgres。 – 2015-02-25 18:43:05

+1

看起来从那时起它已经更新。从链接:上面讨论的所有四个数据集成解决方案可以用于所有RDS数据库引擎(MySQL,SQL Server,PostgreSQL和Oracle)._ – ryan 2015-08-17 23:26:08

现在,你可以定义一个复制活动来提取一个Postgres RDS实例数据到S3。在数据管道接口中:

  1. 创建SqlDataNode类型的数据节点。指定表名并选择查询
  2. 通过指定RDS实例ID(实例ID在您的URL中,例如your-instance-id.xxxxx.eu-west-1.rds.amazonaws.com)以及用户名,密码和数据库名称。
  3. 创建类型S3DataNode
  4. 的数据节点创建副本活动,并设置SqlDataNode作为输入和S3DataNode作为输出
+0

已确认,您不需要shellcommandactivity – 2016-03-17 17:58:44

+0

这太糟糕了,这是不正确的目前尚未在CA中提供 – 2016-07-25 17:26:32