8
votes

Comment tuyer des données de AWS Postgres RDS à S3 (puis redshift)?

J'utilise un service de pipeline de données AWS pour les données de tuyau à partir d'un rds mysql code> à S3 code> puis sur redshift code>, qui fonctionne Bien.

Cependant, j'ai aussi des données vivant dans un RDS Postres CODE>, que je voudrais tuer de la même manière, mais j'ai du mal à configurer la connexion JDBC. Si cela n'est pas supporté, y a-t-il un travail autour? P>

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


0 commentaires

3 Réponses :


5
votes

Cela ne fonctionne pas encore. AWS n'a pas construit / libéré la fonctionnalité pour se connecter bien aux postgres. Vous pouvez cependant le faire dans une coquillage. Vous pouvez écrire un peu de code rubis ou python pour le faire et déposez-le dans un script sur S3 à l'aide de Scripturi. Vous pouvez également écrire une commande PSQL pour vider la table à un CSV, puis sur le tuyau que sur OUTPUT1_STAGING_DIR avec "STAGINE: TRUE" dans ce nœud d'activité.

Quelque chose comme ceci: p>

{
  "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"
}
  • Avantages: super simples et ne nécessite aucun fichier de script supplémentaire à télécharger sur S3 LI>
  • inconvénients: pas exactement sécurisé. Votre mot de passe de DB sera transmis sur le fil sans cryptage. li> ul>

    Regardez dans les nouveaux trucs AWS vient de lancer sur des pipelines de données paramétrées: http://docs.aws.amazon.com/datapipeline/latest/developerguide/dp-custom-temp-templates.html . On dirait que cela permettra de cryptage des paramètres arbitraires. p> p>


1 commentaires

En tant que mise à jour rapide: PostgreSQL prend maintenant en charge SSL, donc si vous êtes sur une version plus récente, assurez-vous de définir SSL = TRUE, le cryptage est donc configuré.



1
votes

AWS permettent désormais des partenaires de faire près de Real Time RDS -> Redshift Inserts.

https://aws.amazon .com / blogs / AWS / Fast-Easy-Free-Free-Sync-RDS-to-Redshift /


2 commentaires

À partir du 27/05/2015, le lien ci-dessus prend uniquement en charge MySQL -> Redshift et n'a pas de soutien pour Postgres, dont OP est question.


On dirait qu'il a été mis à jour depuis lors. Du lien: toutes les quatre solutions d'intégration de données décrites ci-dessus peut être utilisée avec tous les moteurs de base de données RDS (MySQL, SQL Server, PostgreSQL et Oracle).



14
votes

De nos jours, vous pouvez définir une copie-activité pour extraire des données d'une instance RDS Postgres dans S3. Dans l'interface de pipeline de données:

  1. Créez un nœud de données du type SQLDatanode. Spécifiez le nom du tableau et sélectionnez Query
  2. Configurez la connexion de la base de données en spécifiant ID d'instance RDS (l'ID d'instance est dans votre URL, par exemple votre-Instance-id.xxxxx.eu-west-.rds.amazonaws.com) avec le nom d'utilisateur, le mot de passe et le nom de la base de données .
  3. Créez un nœud de données du type S3Datanode
  4. Créez une activité de copie et définissez le sqldatanode comme entrée et le S3Datanode en tant que sortie

2 commentaires

C'est juste trop mal que cela ne soit pas encore disponible en CA


Pouvez-vous ajouter une capture d'écran de ce que le résultat devrait ressembler? Je reçois une assez étrange structure bizarre.