6

Używam usługi rurociągu danych AWS do przesyłania danych z bazy danych RDS MySql do s3, a następnie do Redshift, która działa ładnie.Jak podłączyć dane z AWS Postgres RDS do S3 (następnie Redshift)?

Jednak mam również dane żywe w instancji RDS Postres, które chciałbym potokować w ten sam sposób, ale mam trudności z konfiguracją połączenia jdbc. Jeśli nie jest to obsługiwane, czy istnieje obejście?

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

Odpowiedz

5

to jeszcze nie działa. aws nie zbudował/wypuścił funkcjonalności, aby ładnie połączyć się z postgresem. możesz to zrobić w powłoce aktywnej. możesz napisać trochę kodu ruby ​​lub pythona, aby to zrobić i upuścić go w skrypcie na s3 przy użyciu skryptUri. możesz też po prostu napisać komendę psql, aby zrzucić tabelę do pliku csv, a następnie przesłać ją do OUTPUT1_STAGING_DIR z "staging: true" w tym węźle aktywności.

coś takiego:

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

ja nie uruchomić to do sprawdzenia, ponieważ jest to ból do rozpędzają rurociągu :(więc dokładnie sprawdzić ucieczki w poleceniu

  • plusy. : bardzo proste i nie wymaga żadnych dodatkowych plików skryptów do przesłania na s3
  • minusy: niezupełnie bezpieczne Twoje hasło do bazy danych zostanie przekazane przez kabel bez szyfrowania

Zapoznaj się z nowymi materiałami uruchomionymi na sparametryzowanych potokach danych: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-custom-templates.html. wygląda na to, że pozwoli na szyfrowanie arbitralnych parametrów.

+0

jako szybki aktualizacji: PostgreSQL wspiera teraz SSL, więc jeśli jesteś na nowsza wersja upewnij się, że ustawiłeś ssl = true, więc szyfrowanie jest ustawione. –

0

AWS pozwala teraz partnerom na wykonanie w czasie rzeczywistym RDS -> Redshift insertts.

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

+3

Od 25.02.2015 powyższy link obsługuje tylko MySQL -> Redshift i nie obsługuje PostgreS, o co pyta OP. –

+1

Wygląda na to, że został zaktualizowany od tego czasu. Od linku: _Wszystkie cztery rozwiązania integracji danych omówione powyżej mogą być używane ze wszystkimi silnikami baz danych RDS (MySQL, SQL Server, PostgreSQL i Oracle) ._ – ryan

12

Obecnie można zdefiniować copy-Activity, aby wyodrębnić dane z instancji Postgres RDS do S3. W interfejsie rurociągu danych:

  1. Utwórz węzeł danych typu SqlDataNode. Podaj nazwę tabeli i wybierz zapytanie
  2. Skonfiguruj połączenie z bazą danych, podając identyfikator wystąpienia RDS (identyfikator instancji znajduje się w adresie URL, np. Your-instance-id.xxxxx.eu-west-1.rds.amazonaws.com) wraz z nazwa użytkownika, hasło i nazwa bazy danych.
  3. Utwórz węzeł danych typu S3DataNode
  4. Utwórz aktywność Kopiuj i ustawić SqlDataNode jako wejście i wyjście S3DataNode jako
+0

potwierdzone, nie potrzebujesz już polecenia powłoki poleceń –

+0

Po prostu szkoda, że ​​to nie jest jest jeszcze dostępny w CA. –