Kopieren von Daten aus Amazon S3 in Azure Storage mithilfe von AzCopy
AzCopy ist ein Befehlszeilenhilfsprogramm, das Sie verwenden können, um Blobs oder Dateien in oder aus einem Speicherkonto zu kopieren. Dieser Artikel enthält Informationen zum Kopieren von Objekten, Verzeichnissen und Buckets aus Amazon Web Services (AWS) S3 in Azure Blob Storage mit AzCopy.
Hinweis
AzCopy unterstützt standardmäßige virtuelle URLs im Hostingstil oder URLs im Pfadstil, die von AWS definiert wurden. Beispiel: https://bucket.s3.amazonaws.com
oder https://s3.amazonaws.com/bucket
.
Auswählen, wie Sie die Autorisierungsanmeldeinformationen bereitstellen
Nutzen Sie für die Azure Storage-Autorisierung Microsoft Entra ID oder ein SAS-Token (Shared Access Signature).
Verwenden Sie für die Autorisierung mit AWS S3 einen AWS-Zugriffsschlüssel und einen geheimen Zugriffsschlüssel.
Autorisieren mit Azure Storage
Lesen Sie den Artikel Erste Schritte mit AzCopy, um AzCopy herunterzuladen und auszuwählen, wie Sie für den Speicherdienst Autorisierungsanmeldeinformationen bereitstellen können.
Hinweis
Bei den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie Ihre Identität mithilfe des AzCopy login
-Befehls authentifiziert haben. AzCopy verwendet Ihr Microsoft Entra-Konto, um den Zugriff auf Daten in Blob Storage zu autorisieren.
Wenn Sie lieber ein SAS-Token für die Autorisierung des Zugriffs auf Blobdaten verwenden möchten, können Sie dieses Token in jedem AzCopy-Befehl an die Ressourcen-URL anfügen.
Beispiel: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>
.
Autorisieren mit AWS S3
Halten Sie Ihren AWS-Zugriffsschlüssel und geheimen Zugriffsschlüssel bereit, und legen Sie dann folgende Umgebungsvariablen fest:
Betriebssystem | Get-Help |
---|---|
Windows | PowerShell:$env:AWS_ACCESS_KEY_ID=<access-key> $env:AWS_SECRET_ACCESS_KEY=<secret-access-key> Verwenden Sie in einer Eingabeaufforderung: set AWS_ACCESS_KEY_ID=<access-key> set AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Linux | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
macOS | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Diese Anmeldeinformationen werden verwendet, um vorab signierte URLs zu generieren, die zum Kopieren von Objekten verwendet werden.
Kopieren von Objekten, Verzeichnisse und Buckets
Da für AzCopy die Put Block From URL-API verwendet wird, werden Daten direkt zwischen AWS S3 und Speicherservern kopiert. Für diese Kopiervorgänge wird nicht die Netzwerkbandbreite Ihres Computers genutzt.
Tipp
In den Beispielen in diesem Abschnitt werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.
Diese Beispiele können auch für Konten mit einem hierarchischen Namespace verwendet werden. Multiprotokollzugriff für Data Lake Storage ermöglicht es Ihnen, dieselbe URL-Syntax (blob.core.windows.net
) für diese Konten zu verwenden.
Kopieren eines Objekts
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Beispiel
azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Hinweis
In den Beispielen in diesem Artikel werden URLs im Pfadstil für AWS S3-Buckets verwendet (z. B. http://s3.amazonaws.com/<bucket-name>
).
Sie können auch virtuelle URLs im Hostingstil nutzen (z. B. http://bucket.s3.amazonaws.com
).
Weitere Informationen zum virtuellen Hosten von Buckets finden Sie unter Virtual Hosting of Buckets (Virtuelles Hosten von Buckets).
Kopieren eines Verzeichnisses
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Beispiel
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Hinweis
In diesem Beispiel wird das Flag --recursive
angehängt, um Dateien in allen Unterverzeichnissen zu kopieren.
Kopieren des Inhalts eines Verzeichnisses
Mithilfe des Platzhaltersymbols (*) können Sie die Inhalte eines Verzeichnisses kopieren, ohne das Verzeichnis selbst zu kopieren.
Syntax
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Beispiel
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Kopieren eines Buckets
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true
Beispiel
azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true
Kopieren aller Buckets in allen Regionen
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Beispiel
azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Kopieren aller Buckets in einer bestimmten S3-Region
Verwenden Sie dieselbe URL-Syntax (blob.core.windows.net
) für Konten mit einem hierarchischen Namespace.
Syntax
azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Beispiel
azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Unterschiede in Benennungsregeln für Objekte
AWS S3 verfügt über andere Namenskonventionen für Bucketnamen als Azure-Blobcontainer. Informationen zu diesem Thema finden Sie hier. Wenn Sie die Entscheidung treffen, eine Gruppe mit Buckets in ein Azure-Speicherkonto zu kopieren, tritt für den Kopiervorgang ggf. ein Fehler aufgrund von Unterschieden bei der Benennung auf.
Mit AzCopy werden zwei der häufigsten Probleme behandelt, die auftreten können: Buckets, die Zeiträume enthalten, und Buckets, die aufeinander folgende Bindestriche enthalten. Namen von AWS S3-Buckets können Zeiträume und aufeinander folgende Bindestriche enthalten, aber für einen Container in Azure ist dies nicht möglich. Mit AzCopy werden Zeiträume durch Bindestriche und aufeinander folgende Bindestriche durch eine Zahl ersetzt, die für die Anzahl von aufeinander folgenden Bindestriche steht (Beispiel: ein Bucket mit dem Namen my----bucket
wird zu my-4-bucket
.
Wenn mit AzCopy Dateien kopiert werden, wird auch eine Überprüfung auf Namenskonflikte durchgeführt und versucht, diese zu lösen. Falls beispielsweise Buckets mit den Namen bucket-name
und bucket.name
vorhanden sind, löst AzCopy einen Bucket mit dem Namen bucket.name
zuerst in bucket-name
und dann in bucket-name-2
auf.
Behandeln von Unterschieden in Objektmetadaten
Bei AWS S3 und Azure sind in den Namen von Objektschlüsseln unterschiedliche Zeichen zulässig. Informationen zu den Zeichen, die in AWS S3 genutzt werden können, finden Sie hier. Auf Azure-Seite unterliegen Blobobjektschlüssel den Benennungsregeln für C#-Bezeichner.
Im Rahmen des AzCopy-Befehls copy
können Sie einen Wert für das optionale Flag s2s-handle-invalid-metadata
angeben. Hiermit wird festgelegt, wie Dateien verarbeitet werden sollen, bei denen die Metadaten der Datei inkompatible Schlüsselnamen enthalten. In der folgenden Tabelle werden die einzelnen Flagwerte beschrieben.
Flagwert | BESCHREIBUNG |
---|---|
ExcludeIfInvalid | (Standardoption) Die Metadaten sind nicht im übertragenen Objekt enthalten. AzCopy protokolliert eine Warnung. |
FailIfInvalid | Objekte werden nicht kopiert. AzCopy protokolliert einen Fehler und fügt diese Fehler der Fehleranzahl hinzu, die in der Zusammenfassung der Übertragung angezeigt wird. |
RenameIfInvalid | AzCopy löst den ungültigen Metadatenschlüssel auf und kopiert das Objekt in Azure, indem das aufgelöste Schlüssel-Wert-Paar aus den Metadaten verwendet wird. Informationen zu den genauen Schritten, die von AzCopy zum Umbenennen von Objektschlüsseln ausgeführt werden, finden Sie unten im Abschnitt Umbenennen von Objektschlüsseln durch AzCopy. Falls der Schlüssel von AzCopy nicht umbenannt werden kann, wird das Objekt nicht kopiert. |
Umbenennen von Objektschlüsseln durch AzCopy
AzCopy führt die folgenden Schritte aus:
Ersetzt ungültige Zeichen durch „_“.
Fügt am Anfang eines neuen gültigen Schlüssels die Zeichenfolge
rename_
hinzu.Dieser Schlüssel wird verwendet, um den ursprünglichen Wert aus den Metadaten zu speichern.
Fügt am Anfang eines neuen gültigen Schlüssels die Zeichenfolge
rename_key_
hinzu. Dieser Schlüssel wird verwendet, um den ursprünglichen ungültigen Schlüssel aus den Metadaten zu speichern. Sie können mit diesem Schlüssel versuchen, die Metadaten auf Azure-Seite wiederherzustellen, weil der Metadatenschlüssel als Wert im Blobspeicherdienst gespeichert wird.
Nächste Schritte
Weitere Beispiele finden Sie in diesen Artikeln:
- Beispiele: Hochladen
- Beispiele: Herunterladen
- Beispiele: Kopieren zwischen Konten
- Beispiele: Synchronisieren
- Beispiele: Google Cloud Storage
- Beispiele: Azure Files
- Tutorial: Migrieren von lokalen Daten zum Cloudspeicher mithilfe von AzCopy
Lesen Sie diese Artikel, um Einstellungen zu konfigurieren, die Leistung zu optimieren und Probleme zu beheben: