Wie kann ich alle Objekte von einem Amazon S3-Bucket in einen anderen Bucket kopieren?

Lesedauer: 6 Minute
0

Ich möchte alle meine Objekte von einem Amazon Simple Storage Service (Amazon S3)-Bucket in einen anderen Bucket kopieren oder verschieben. Ich möchte Objekte zwischen meinen S3-Buckets migrieren.

Kurzbeschreibung

Gehen Sie wie folgt vor, um Objekte von einem S3-Bucket in einen anderen zu kopieren:

1.Erstellen Sie einen neuen S3-Bucket.

2.Installieren und konfigurieren Sie das AWS Command Line Interface (AWS CLI).

3.Kopieren Sie die Objekte zwischen den S3-Buckets.

**Hinweis:**Die Verwendung der Befehle aws s3 ls oder aws s3 sync für große Buckets (mit 10 Millionen Objekten oder mehr) kann teuer sein und zu einem Timeout führen. Wenn Sie aufgrund eines großen Buckets auf Timeouts stoßen, sollten Sie die Amazon CloudWatch-Metriken verwenden, um die Größe und Anzahl der Objekte in einem Bucket zu berechnen. Erwägen Sie auch, S3 Batch Operations zum Kopieren der Objekte zu verwenden.

4.Stellen Sie sicher, dass die Objekte kopiert wurden.

5.Aktualisieren Sie vorhandene API-Aufrufe auf den Namen des Ziel-Buckets.

Achten Sie vor Beginn auf Folgendes:

Behebung

Einen neuen S3-Bucket erstellen

1.Öffnen Sie die Amazon-S3-Konsole.

2.Wählen Sie Bucket erstellen aus.

3.Wählen Sie einen DNS-kompatiblen Namen für Ihren neuen Bucket aus.

4.Wählen Sie Ihre AWS-Region aus.

Tipp: Um Leistungsprobleme zu vermeiden, die durch regionsübergreifenden Verkehr verursacht werden, erstellen Sie den Ziel-Bucket in derselben Region wie den Quell-Bucket.

5.Wählen Sie optional Einstellungen aus einem vorhandenen Bucket kopieren, um die Konfiguration des Quell-Buckets widerzuspiegeln.

Installieren und konfigurieren Sie die AWS CLI

1.Installieren Sie die AWS-CLI.

2.Konfigurieren Sie die AWS-CLI, indem Sie den folgenden Befehl ausführen:

aws configure

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

3.Geben Sie Ihre Zugangsschlüssel ein (Zugangsschlüssel-ID und geheimer Zugangsschlüssel).

4.Drücken Sie die Eingabetaste, um die Standardregion und die Standardausgabeoptionen zu überspringen. Weitere Informationen zu Amazon S3-Regionsparametern finden Sie unter AWS-Service-Endpunkte.

Hinweis: Die AWS-CLI-Ausgaben sind JSON-, Text- oder Tabellenausgaben, aber nicht alle Befehle unterstützen jeden Ausgabetyp. Weitere Informationen finden Sie unter Steuern der Befehlsausgabe von der AWS CLI.

Kopieren Sie die Objekte zwischen den S3-Buckets

1.Wenn Sie S3-Objekte in der Amazon Simple Storage Service Glacier-Speicherklasse archiviert haben, stellen Sie die Objekte wieder her.

2.Kopieren Sie die Objekte zwischen Quell- und Ziel-Bucket, indem Sie den folgenden Sync-Befehl mithilfe der AWS-CLI ausführen:

aws s3 sync s3://DOC-EXAMPLE-BUCKET-SOURCE s3://DOC-EXAMPLE-BUCKET-TARGET

**Hinweis:**Aktualisieren Sie den Sync-Befehl, um Ihre Quell- und Ziel-Bucket-Namen einzuschließen.

Der Sync-Befehl verwendet die CopyObject-APIs, um Objekte zwischen S3-Buckets zu kopieren. Der Sync-Befehl listet die Quell- und Ziel-Buckets auf, um Objekte zu identifizieren, die sich im Quell-Bucket, aber nicht im Ziel-Bucket befinden. Der Befehl identifiziert auch Objekte im Quell-Bucket, die andere LastModified-Daten haben als die Objekte im Ziel-Bucket. Wenn Sie den Sync-Befehl für einen versionierten Bucket verwenden, wird nur die aktuelle Version des Objekts kopiert — frühere Versionen werden nicht kopiert. Standardmäßig werden bei diesem Verhalten Objektmetadaten beibehalten.

Wenn für den Quell-Bucket Zugriffssteuerungslisten (ACLs) aktiviert sind, werden die ACLs nicht in den Ziel-Bucket kopiert. Dies gilt unabhängig davon, ob die ACLs im Ziel-Bucket aktiviert sind oder nicht. Wenn sowohl für den Quell- als auch für den Ziel-Bucket ACLs aktiviert sind, gewähren die Zielobjekt-ACLs dem Konto, das den Kopiervorgang durchgeführt hat, FULL\ _CONTROL. Wenn der Vorgang fehlschlägt, können Sie den Sync-Befehl erneut ausführen, ohne zuvor kopierte Objekte zu duplizieren. Informationen zur Behebung von Problemen mit dem Synchronisierungsvorgang finden Sie unter Warum kann ich kein Objekt zwischen zwei Amazon S3-Buckets kopieren?

3.(Optional) Wenn ein Timeout auftritt, verwenden Sie den Befehl cloudwatch get-metric-statistics, um die Anzahl der Objekte in Ihrem Bucket zu berechnen:

$ aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name NumberOfObjects --dimensions Name=BucketName,Value=DOC-EXAMPLE-BUCKET-SOURCE Name=StorageType,Value=AllStorageTypes --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 600 --statistic Average --output json

4.(Optional) Wenn ein Timeout auftritt, verwenden Sie den Befehl cloudwatch get-metric-statistics, um Ihre Bucket-Größe abzurufen:

$ aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=DOC-EXAMPLE-BUCKET-SOURCE Name=StorageType,Value=StandardStorage --start-time 2021-05-11T00:00 --end-time 2021-05-11T00:10 --period 3600 --statistics Average --unit Bytes --output json

**Hinweis:**Listcalls können sehr teuer sein, was zu einem Timeout des Befehls führt. Bei großen Buckets sollten Sie stattdessen Amazon CloudWatch-Metriken verwenden, um die Größe des Buckets und die Gesamtzahl der Objekte zu berechnen. Da Amazon CloudWatch-Metriken jedoch nur einmal am Tag abgerufen werden, können die gemeldete Objektanzahl und Bucket-Größe von den Ergebnissen des List-Befehls abweichen.

Stellen Sie sicher, dass die Objekte kopiert wurden

1.Überprüfen Sie den Inhalt der Quell- und Ziel-Buckets, indem Sie die folgenden Befehle ausführen:

aws s3 ls --recursive s3://DOC-EXAMPLE-BUCKET-SOURCE --summarize > bucket-contents-source.txt

aws s3 ls --recursive s3://DOC-EXAMPLE-BUCKET-TARGET --summarize > bucket-contents-target.txt

Hinweis: Aktualisieren Sie den List-Befehl, um Ihre Quell- und Ziel-Bucket-Namen einzuschließen.

2.Vergleichen Sie Objekte, die sich im Quell- und Ziel-Bucket befinden, mithilfe der Ausgaben, die in Dateien im AWS-CLI-Verzeichnis gespeichert sind. Sehen Sie sich die folgende Beispielausgabe an:

$ aws s3 ls --recursive s3://DOC-EXAMPLE-BUCKET --summarize
2017-11-20 21:17:39      15362 s3logo.png

  Total Objects: 1        Total Size: 15362

Aktualisieren Sie vorhandene API-Aufrufe auf den Namen des Ziel-Buckets

Aktualisieren Sie alle vorhandenen Anwendungen oder Workloads, sodass sie den Namen des Ziel-Buckets verwenden. Möglicherweise müssen Sie Sync-Befehle ausführen, um Diskrepanzen zwischen Quell- und Ziel-Buckets zu beheben, wenn Sie häufig schreiben.

Ähnliche Informationen

Amazon S3-Preise

Kopieren Sie Ihr Objekt in einen Ordner

Nach einem großen Löschvorgang in Amazon S3 reagiert der List-Befehl nicht mehr. Wie behebe ich das Problem?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren