6

Ich verwende den AWS-Datenpipeline-Dienst, um Daten von einer RDS MySql-Datenbank an s3 und dann an Redshift zu leiten, was gut funktioniert.So leiten Sie Daten von AWS Postgres RDS zu S3 (dann Redshift)?

Allerdings habe ich auch Daten in einer RDS Postres Instanz, die ich gerne auf die gleiche Weise Pipe, aber ich habe eine harte Zeit, die Einrichtung der JDBC-Verbindung. Wenn dies nicht unterstützt wird, gibt es einen Workaround?

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

Antwort

5

das funktioniert noch nicht. aws hat die Funktionalität nicht aufgebaut/veröffentlicht, um sich gut mit Postgres zu verbinden. Sie können es jedoch in einer Shell-Command-Aktivität tun. Sie können ein wenig Ruby oder Python-Code schreiben, um es zu tun und das in einem Skript auf s3 mit scriptUri ablegen. Sie könnten auch einfach einen psql-Befehl schreiben, um die Tabelle an einen csv auszugeben und diese dann an OUTPUT1_STAGING_DIR mit "staging: true" in diesem Aktivitätsknoten zu übergeben.

etwas wie folgt aus:

{ 
    "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" 
} 

Das habe ich nicht laufen, um zu überprüfen, weil es ein Schmerz ist, eine Pipeline spin up :(so überprüfen Sie in dem Befehl, um die Flucht

  • Profis. : super einfach und erfordert keine zusätzlichen Skript-Dateien zum Hochladen auf s3
  • Nachteile: nicht genau sicher. Ihre Db-Passwort wird über die Leitung ohne Verschlüsselung übertragen werden.

schauen Sie sich die neuen Sachen an, die gerade auf parametrisierten Templating-Datenpipelines gestartet wurden: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-custom-templates.html. Es sieht so aus, als ob es die Verschlüsselung beliebiger Parameter erlaubt.

+0

Als schneller Update: PostgreSQL unterstützt jetzt SSL also, wenn Sie auf einer sind neuere Version stellen Sie sicher, dass Sie ssl = true setzen, damit die Verschlüsselung eingerichtet wird. –

0

Mit AWS können Partner jetzt nahezu Echtzeit-RDS -> Redshift-Einsätze durchführen.

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

+3

Ab dem 25.2.2015 unterstützt der obige Link nur MySQL -> Redshift und hat keine Unterstützung für Postgres, nach dem OP fragt. –

+1

Sieht so aus, als ob es seitdem aktualisiert wurde. Von der Verbindung: _All vier Datenintegrationslösungen, die oben besprochen werden, können mit allen RDS Datenbankmaschinen benutzt werden (MySQL, SQL Server, PostgreSQL und Oracle) ._ – ryan

12

Heute können Sie eine Kopie-Aktivität zu extrahieren Daten aus einer Postgres RDS-Instanz in S3 definieren. In der Daten-Pipeline-Schnittstelle:

  1. Erstellen Sie einen Datenknoten vom Typ SqlDataNode. Geben Sie den Tabellennamen ein und wählen Sie die Abfrage
  2. Richten Sie die Datenbankverbindung ein, indem Sie die RDS-Instanz-ID (die Instanz-ID befindet sich in Ihrer URL, z. B. Ihre-Instanz-ID.xxxxx.eu-west-1.rts.amazonaws.com) angeben Benutzername, Passwort und Datenbankname.
  3. einen Datenknoten des S3DataNode Typen erstellen
  4. eine Kopie Aktivität erstellen und die SqlDataNode als Eingang gesetzt und die S3DataNode als Ausgang
+0

bestätigt, Sie benötigen keine Shellcommandactivity mehr –

+0

Es ist einfach zu schlecht dieses isn In CA noch nicht verfügbar –

Verwandte Themen