Verwenden von AzCopy zum Kopieren von Blobs zwischen Azure-Speicherkonten mit Netzwerkeinschränkungen
In diesem Artikel wird das Kopieren von Blobs zwischen Speicherkonten mithilfe des Befehlszeilenprogramms AzCopy vorgestellt. Außerdem wird erläutert, wie der Kopiervorgang implementiert wird, wenn Netzwerkeinschränkungen für die Speicherkonten konfiguriert sind.
Hintergrund
Das Kopieren von Blobdateien zwischen zwei Speicherkonten ist eine häufige Anforderung für viele Azure-Benutzer. Azure Storage unterstützt das direkte Kopieren von Blobs aus einem Speicherkonto in ein anderes. Dies kann mithilfe des Befehlszeilenprogramms AzCopy implementiert werden. 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 hängt nicht von der Netzwerkbandbreite Ihres lokalen Computers ab. Diese Methode kann die Leistung von Speicherkonten und Azure Virtual Network nutzen, um einen besseren Durchsatz als das Herunterladen und Hochladen von Dateien zu erzielen. Es fallen keine Bandbreitengebühren an, wenn sich beide Speicherkonten in derselben Region befinden.
AzCopy-Befehle zum Kopieren von Blobs zwischen Speicherkonten
Wenn Sie Autorisierungsanmeldeinformationen mithilfe von 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 sowohl der Quell- als auch der Ziel-URL, die in Ihren AzCopy-Befehlen verwendet wird, ein SAS-Token anfügen.
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 mehr 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 dynamisch sind.
Im Folgenden werden zwei Szenarien unterstützt:
Szenario 1: Der Client verwendet einen öffentlichen Endpunkt für den Zugriff auf Speicherkonten.
In diesem Szenario müssen Sie die öffentliche IP-Adresse oder das virtuelle Netzwerk (VNET) des Clients zur Zulassungsliste der Firewall 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 verfügt über konfigurierte private Verbindungen und verwendet einen privaten Endpunkt für den Zugriff auf Speicherkonten.
In diesem Szenario wird die Zulassungsliste der Firewall nicht benötigt.
Die folgende Abbildung zeigt den Vorgang des Kopierens von Blobs zwischen Speicherkonten in diesem Szenario:
Hier sehen Sie den vollständigen 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 von der Quellfirewall nicht zugelassen wurde, wird der Fehler "403 Verboten" angezeigt.
- Nachdem der Zielspeicher den Fehler "403 Verboten" empfängt, sendet er eine weitere GetBlob-Anforderung im Namen 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 committen und den Prozess abzuschließen, nachdem ein Erfolgsantwortcode aus der Anforderung empfangen wurde.
Kopieren von Blobs zwischen Speicherkonten in einer Hub-Spoke-Architektur mithilfe privater Endpunkte
Ein Fehler 403 tritt auf, wenn AzCopy zum Kopieren von Blobs zwischen Speicherkonten verwendet wird, die mit privaten Endpunkten in verschiedenen Spoke-VNETs von einem virtuellen Computer in einem Hub-VNET verbunden sind. Sie finden den Fehler "403 Diese Anforderung ist nicht autorisiert, 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 Vorgang des Kopierens von Blobs zwischen Speicherkonten in der Problemumgehung 1.
Problemumgehung 2: Platzieren Sie die VM im selben VNET wie das Quellspeicherkonto, und stellen Sie ein Peering zwischen dem VNET und dem Ziel-VNET bereit.
Eine weitere Möglichkeit besteht darin, den virtuellen Computer in demselben VNET wie das Quellspeicherkonto zu platzieren. Richten Sie dann das Peering zwischen diesem VNET und dem Ziel-VNET ein. Das folgende Architekturdiagramm zeigt den Vorgang des Kopierens von Blobs zwischen Speicherkonten in Problemumgehung 2.
Problemumgehung 3: Verwenden eines temporären Stagingkontos zum Kopieren der Daten
Wenn Sie die oben genannten Problemumgehungen nicht implementieren können oder die vorhandene Netzwerkkonfiguration des Speicherkontos oder VNET 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, 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 möglich sind. Verwenden Sie einen virtuellen Computer, um die Daten aus dem Quellspeicherkonto herunterzuladen, und laden Sie sie dann in das Zielspeicherkonto hoch. Dies kann mit AzCopy erfolgen. Stellen Sie sicher, dass die Größe und Die 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.