6

我正在使用AWS數據管道服務將數據從RDS MySql數據庫傳輸到s3,然後到Redshift,這很好地工作。如何將數據從AWS Postgres RDS傳輸到S3(然後是Redshift)?

但是,我也有數據生活在RDS Postres實例中,我想以同樣的方式管道,但我很難設置jdbc連接。如果這不受支持,是否有解決方法?

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

回答

5

這還不行。 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

0

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

12

現在,你可以定義一個複製活動來提取一個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

相關問題