Verwenden von AzCopy zum Kopieren von Blobs zwischen Azure-Speicherkonten mit Netzwerkeinschränkungen
In diesem Artikel wird erläutert, wie Blobs zwischen Speicherkonten mithilfe des Befehlszeilenprogramms AzCopy kopiert werden. Außerdem wird erläutert, wie Sie den Kopiervorgang implementieren, wenn Netzwerkeinschränkungen für die Speicherkonten konfiguriert sind.
Hintergrund
Das Kopieren von BLOB-Dateien zwischen zwei Speicherkonten ist eine häufige Anforderung für viele Azure-Benutzer. Azure Storage unterstützt das direkte Kopieren von Blobs von einem Speicherkonto in ein anderes, das mithilfe des Befehlszeilenprogramms AzCopy implementiert werden kann. Benutzer müssen keine Dateien auf lokale Datenträger oder Puffer herunterladen und dann erneut hochladen.
Das Kopieren von Blobs zwischen zwei Speicherkonten mithilfe von AzCopy basiert nicht auf der Netzwerkbandbreite Ihres lokalen Computers. Diese Methode kann die Leistung von Speicherkonten und Azure Virtual Network nutzen, um einen besseren Durchsatz zu erzielen als das Herunterladen und Hochladen von Dateien. Es gibt keine Bandbreitengebühren, wenn sich beide Speicherkonten in derselben Region befinden.
AzCopy-Befehle zum Kopieren von Blobs zwischen Speicherkonten
Wenn Sie Autorisierungsanmeldeinformationen mithilfe der Microsoft Entra-ID angeben, verwenden Sie den folgenden Befehl:
azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>'
In diesem Szenario müssen Sie sicherstellen, dass Ihre Microsoft Entra-Identität über die richtigen Rollenzuweisungen für Quell- und Zielkonten verfügt.
Wenn Sie ein SAS-Token (Shared Access Signature) verwenden, verwenden Sie den folgenden Befehl:
azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'
In diesem Szenario müssen Sie ein SAS-Token sowohl an die Quell- als auch an die Ziel-URL anfügen, die in Ihren AzCopy-Befehlen verwendet wird.
Weitere Informationen finden Sie unter Kopieren von Blobs zwischen Azure-Speicherkonten mit AzCopy v10.
Kopieren von Blobs zwischen Speicherkonten mit Zugriffsbeschränkung
Wenn Sie den Zugriff auf Quell- und Zielspeicherkonten über die Speicherfirewall einschränken müssen, benötigen Sie möglicherweise weitere Konfigurationen zum Kopieren von Blobs zwischen Speicherkonten mithilfe von AzCopy. Dies liegt daran, dass die Kopieranforderung zwischen zwei Speicherkonten private IP-Adressen verwendet, und die IP-Adressen sind dynamisch.
Hier sind zwei unterstützte Szenarien:
Szenario 1: Der Client verwendet einen öffentlichen Endpunkt für den Zugriff auf Speicherkonten.
In diesem Szenario müssen Sie die öffentliche IP-Adresse des Clients oder das virtuelle Netzwerk (VNet) zur Firewall-Zulassungsliste in den Quell- und Zielspeicherkonten hinzufügen.
Die folgende Abbildung zeigt den Vorgang des Kopierens von Blobs zwischen Speicherkonten in diesem Szenario:
Szenario 2: Das VNet des Clients hat private Links konfiguriert und verwendet einen privaten Endpunkt, um auf Speicherkonten zuzugreifen.
In diesem Szenario ist die Firewall-Zulassungsliste nicht erforderlich.
Die folgende Abbildung zeigt den Vorgang des Kopierens von Blobs zwischen Speicherkonten in diesem Szenario:
Dies ist der vollständige Prozess dieses Mechanismus für die beiden Szenarien:
- Der Client sendet eine PutBlockfromURL-Anforderung an den Zielspeicher.
- Der Zielspeicher empfängt die Anforderungen und versucht, Blöcke von der angegebenen Quell-URL abzurufen. Da der Zielspeicher jedoch nicht von der Quellfirewall zugelassen wurde, wird ein Fehler "403 Verboten" angezeigt.
- Nachdem der Zielspeicher den Fehler "403 Verboten" erhält, sendet er eine weitere GetBlob-Anforderung im Auftrag des Clients. Wenn der Client Zugriff auf den Quellspeicher hat, kann das Ziel die Blöcke aus der Quelle abrufen und einen Erfolgsantwortcode an den Client zurückgeben.
- Der Client sendet PutBlockList an den Zielspeicher, um die Blöcke zu übernehmen und den Prozess abzuschließen, nachdem ein Erfolgsantwortcode von der Anforderung empfangen wurde.
Kopieren von Blobs zwischen Speicherkonten in einer Hub-Spoke-Architektur mithilfe privater Endpunkte
Ein 403-Fehler tritt auf, wenn AzCopy verwendet wird, um Blobs zwischen Speicherkonten zu kopieren, die mit privaten Endpunkten in verschiedenen Spoke-VNets von einem virtuellen Computer in einem Hub-VNet verbunden sind. Sie finden einen Fehler "403 Diese Anforderung ist nicht berechtigt, diesen Vorgang auszuführen - CannotVerfiyCopySource" in den AzCopy-Protokollen oder in den Azure Storage-Protokollen. Das folgende Architekturdiagramm zeigt das Szenario, in dem der Fehler auftritt.
Problemumgehung 1: Erstellen eines privaten Endpunkts für das Zielspeicherkonto im Quell-VNet
Eine mögliche Problemumgehung besteht darin, einen privaten Endpunkt für das Zielspeicherkonto im Quell-VNet zu erstellen. Diese Konfiguration ermöglicht es dem virtuellen Computer, die Blobs mithilfe von AzCopy erfolgreich zwischen den Speicherkonten zu kopieren. Das folgende Architekturdiagramm zeigt den Prozess des Kopierens von Blobs zwischen Speicherkonten in der Problemumgehung 1.
Problemumgehung 2: Platzieren Sie den virtuellen Computer im selben VNet wie das Quellspeicherkonto und peeren Sie das VNet mit dem Ziel-VNet.
Eine weitere Option besteht darin, den virtuellen Computer im selben VNet wie das Quellspeicherkonto zu platzieren. Richten Sie dann Peering zwischen diesem VNet und dem Ziel-VNet ein. Das folgende Architekturdiagramm zeigt den Prozess des Kopierens von Blobs zwischen Speicherkonten in Problemumgehung 2.
Problemumgehung 3: Verwenden eines temporären Stagingkontos zum Kopieren der Daten
Wenn Sie die zuvor erwähnten Problemumgehungen nicht implementieren können oder die vorhandene Netzwerkkonfiguration des Speicherkontos oder VNets nicht ändern können, können Sie ein temporäres Stagingkonto verwenden, um die Daten zu kopieren:
- Erstellen Sie ein temporäres Speicherkonto in derselben Region wie das Quellspeicherkonto und das Zielspeicherkonto.
- Verwenden Sie AzCopy, um die Daten aus dem Quellspeicherkonto in das temporäre Speicherkonto zu kopieren.
- Kopieren Sie die Daten aus dem temporären Speicherkonto in das Zielspeicherkonto. Stellen Sie sicher, dass das temporäre Speicherkonto über einen privaten Endpunkt im selben VNet wie das Zielspeicherkonto verfügt, bevor Sie die Datenübertragung durchführen.
Problemumgehung 4: Verwenden Sie einen virtuellen Computer, und laden Sie die Daten auf den virtuellen Computer herunter, und laden Sie die Daten dann in das Zielspeicherkonto hoch.
Verwenden Sie diese Problemumgehung nur, wenn andere Methoden nicht machbar sind. Verwenden Sie einen virtuellen Computer, um die Daten aus dem Quellspeicherkonto herunterzuladen und dann in das Zielspeicherkonto hochzuladen. Dies kann mit AzCopy erfolgen. Stellen Sie sicher, dass die Größe und Datenträgerkapazität des virtuellen Computers für den Datenübertragungsprozess geeignet sind.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.