Wie kann ich die Leistung optimieren, wenn ich große Datenmengen auf Amazon S3 hochlade?

Lesedauer: 3 Minute
0

Ich lade eine große Datenmenge auf Amazon Simple Storage Service (Amazon S3) hoch oder kopiere eine große Datenmenge zwischen S3-Buckets. Wie kann ich die Leistung dieser Datenübertragung optimieren?

Lösung

Ziehen Sie die folgenden Methoden in Betracht, um große Datenmengen zu oder aus Amazon S3-Buckets zu übertragen:

Parallele Uploads mit der AWS Command Line Interface (AWS CLI)

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Teilen Sie die Übertragung in mehrere sich gegenseitig ausschließende Operationen auf, um die Gesamtzeit, die für den Abschluss der Übertragung benötigt wird, potenziell zu verringern. Sie können mehrere Instances von aws s3 cp (copy), aws s3 mv (move) oder aws s3 sync (synchronize) gleichzeitig ausführen.

Eine Möglichkeit, Ihre Übertragung aufzuteilen, besteht darin, die Parameter --exclude und --include zu verwenden, um die Operationen nach Dateinamen zu trennen. Sie möchten beispielsweise eine große Datenmenge von einem Bucket in einen anderen Bucket kopieren. In diesem Beispiel beginnen alle Dateinamen mit einer Zahl. Sie können die folgenden Befehle auf zwei Instances der AWS-CLI ausführen.

Hinweis: Die Parameter --exclude und --include werden auf der Clientseite verarbeitet. Aus diesem Grund können die Ressourcen Ihres lokalen Computers die Leistung des Vorgangs beeinträchtigen.

Führen Sie diesen Befehl aus, um die Dateien zu kopieren, deren Namen mit den Zahlen 0 bis 4 beginnen:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Führen Sie diesen Befehl aus, um die Dateien zu kopieren, deren Namen mit den Zahlen 5 bis 9 beginnen:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Wichtig: Wenn Sie eine große Anzahl von Objekten übertragen müssen (Hunderte von Millionen), sollten Sie erwägen, eine benutzerdefinierte Anwendung mit einem AWS-SDK zu erstellen, um das Kopieren durchzuführen. Die AWS-CLI kann zwar das Kopieren durchführen, aber eine benutzerdefinierte Anwendung könnte in dieser Größenordnung effizienter sein.

AWS Snowball

Erwägen Sie die Verwendung von AWS Snowball für Übertragungen zwischen Ihren On-Premises Rechenzentren und Amazon S3, insbesondere wenn die Daten 10 TB überschreiten.

Beachten Sie die folgenden Einschränkungen:

  • AWS Snowball unterstützt keine Datenübertragung von Bucket zu Bucket.
  • AWS Snowball unterstützt keine serverseitige Verschlüsselung mit Schlüsseln, die vom AWS Key Management System (AWS KMS) verwaltet werden. Weitere Informationen finden Sie unter Verschlüsselung in AWS Snowball.

S3DistCp mit Amazon EMR

Erwägen Sie, S3DistCp mit Amazon EMR zu verwenden, um Daten zwischen Amazon S3-Buckets zu kopieren. S3DistCp ermöglicht das parallele Kopieren großer Objektmengen.

Wichtig: Da für diese Option ein Amazon EMR-Cluster gestartet werden muss, sollten Sie die Amazon EMR-Preise überprüfen.


Ähnliche Informationen

Anforderungsraten- und Leistungsrichtlinien

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr