Weiß jemand, ob es möglich ist, ein großes Dataset von einer URL in Amazon S3 zu importieren?
Grundsätzlich möchte ich vermeiden, dass eine große Datei heruntergeladen und dann über das Webportal erneut in S3 hochgeladen wird. Ich möchte nur die Download-URL für S3 bereitstellen und darauf warten, dass sie sie in ihr Dateisystem herunterladen. Es scheint eine einfache Sache zu sein, aber ich kann die Dokumentation dazu einfach nicht finden.
Antworten:
Da Sie offensichtlich ein AWS-Konto besitzen, würde ich Folgendes empfehlen:
wget http://example.com/my_large_file.csv
.s3cmd
diese Option, um die Datei in S3 hochzuladen. Beispielsweise:s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv
Da Verbindungen zwischen verschiedenen AWS-Diensten das interne Netzwerk von AWS nutzen, ist das Hochladen von einer EC2-Instanz auf S3 ziemlich schnell. Viel schneller als das Hochladen von Ihrem eigenen Computer. Auf diese Weise können Sie vermeiden, dass die Datei auf Ihren Computer heruntergeladen wird, und möglicherweise erhebliche Zeit beim Hochladen über die Weboberfläche sparen.
quelle
Starten Sie eine EC2-Instanz mit ausreichend Speicherplatz
ssh zur Instanz
Rufen Sie den Curl-Befehl ab, der dem Download von Ihrem lokalen Computer entspricht. Sie können die Entwickleroptionen in Google Chrome -> Registerkarte "Netzwerk" -> Kopieren -> Als Curl kopieren verwenden (dieser Schritt ist für einige Websites erforderlich, für die eine Authentifizierung erforderlich ist, z. B. "Kaggle").
Führen Sie den
curl
Befehl vom Instanzterminal aus (-o output_file
an den Befehl anhängen ). Dadurch wird die Datei heruntergeladen und gespeichertKonfigurieren Sie aws-Anmeldeinformationen, um die Instanz mit s3 zu verbinden (eine Möglichkeit besteht darin, den Befehl zu verwenden
aws config
, die ID und das Geheimnis des AWS-Zugriffsschlüssels anzugeben).Verwenden Sie diesen Befehl, um die Datei auf s3 hochzuladen:
quelle
Siehe Aws-Dokumentation: http://aws.amazon.com/code Für die meisten Programmiersprachen stehen Bibliotheken zur Verfügung. Sie können also einen Bucket erstellen und in Ihrem Code konfigurieren, dass Daten aus der URL abgerufen und in s3 in diesen Bucket geschrieben werden
für zB in Python:
Ref: https://boto.readthedocs.org/en/latest/s3_tut.html
quelle
Sie können Ihren s3-Bucket in die ec2-Instanz einbinden und dann in den Ordner / path / to / s3_mounted_on_a_folder cd. Dort können Sie einfach den folgenden Befehl verwenden:
Verwenden Sie s3fs, um s3 an Ihrem ec2 zu mounten.
quelle