1

Ich verwende AWS Data Pipeline, um einige CSV-Daten von S3 nach Redshift zu importieren. Ich habe auch eine ShellCommandActivity hinzugefügt, um alle S3-Dateien nach Abschluss der Kopieraktivität zu entfernen. Ich habe ein Bild mit dem ganzen Prozess verbunden.Verwenden Sie dieselbe EC2-Instanz für alle AWS Data Pipeline-Aktivitäten.

Move S3 CSV data to Redshift using AWS data pipeline

Alles funktioniert gut, aber jede Aktivität beginnt es eigene EC2-Instanz ist. Ist es möglich, dass die ShellCommandActivity dieselbe EC2-Instanz wie die RedshiftCopyActivity wiederverwendet, nachdem der Kopierbefehl abgeschlossen wurde?

Vielen Dank!

Antwort

0

Damit die ShellCommandActivity auf derselben EC2-Instanz ausgeführt werden kann, habe ich meine ShellCommandActivity mit Architect bearbeitet und für die Option Runs on Ec2Instance ausgewählt. Die ShellCommandActivity wird automatisch der gleichen EC2Instance wie die RedshiftCopyActivity zugeordnet. Nun ist die ganze Prozess sieht wie folgt aus:

enter image description here

Thank you!

0

Sofern Sie nicht alle Aktivitäten in Shell oder CLI ausführen können, ist es nicht möglich, alles in derselben Instanz auszuführen.

Ein Vorschlag, den ich geben kann, ist, zu neuen Technologien weiterzugehen. AWS Data Pipeline ist veraltet (4 Jahre alt). Sie sollten AWS Lambda verwenden, was Ihnen einen Bruchteil dessen kostet, was Sie bezahlen, und Sie können die Dateien in Redshift laden, sobald die Dateien in S3 hochgeladen werden. Die Bereinigung erfolgt automatisch und Lambda ist viel leistungsfähiger als die AWS Data Pipeline. Das Tutorial A Zero-Administration Amazon Redshift Database Loader ist das gewünschte. Ja, es gibt eine Lernkurve, aber wie der Titel andeutet, ist es keine administrative Belastung.

+0

Vielen Dank für Ihre Antwort. Ich habe versucht, diesem Tutorial zu folgen, aber von dem, was ich verstanden habe, verlangen die Lambda-Funktionen, dass Ihr Redshift-Cluster öffentlich zugänglich ist und es für diesen Moment keine andere Möglichkeit gibt, dies zu tun. Siehe diesen Blogpost: https://github.com/awslabs/aws-lambda-redshift-loader/issues/30. Für mich ist es ein Muss, dass der Redshift-Cluster nicht öffentlich zugänglich ist. Unsere Infrastruktur basiert auf VPCs. –

+0

@ Radu-StefanZugravu Auschecken: https://aws.amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/ – helloV

+0

Ich habe das auch versucht. Selbst wenn ich einen s3-Endpunkt hinzufüge, überschreitet meine Lambda-Funktion das Zeitlimit: Die Zeitüberschreitung der Aufgabe endete nach 59,00 Sekunden. Wenn ich meine Lambda-Funktion außerhalb von VPC erhalte, erhält sie die hochgeladene s3-Datei erfolgreich. Irgendeine Idee? Vielen Dank! –