Migrieren Sie Daten mithilfe von Rclone von Microsoft Azure Blob zu Amazon S3 - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie Daten mithilfe von Rclone von Microsoft Azure Blob zu Amazon S3

Erstellt von Suhas Basavaraj (AWS), Aidan Keane () und Corey Lane () AWS AWS

Umgebung: PoC oder Pilot

Quelle: Microsoft Azure-Speichercontainer

Ziel: Amazon S3 S3-Bucket

R-Typ: Replatform

Arbeitslast: Microsoft

Technologien: Migration; Speicherung und Sicherung

AWSDienste: Amazon S3

Übersicht

Dieses Muster beschreibt, wie Rclone verwendet wird, um Daten aus dem Microsoft Azure Blob-Objektspeicher in einen Amazon Simple Storage Service (Amazon S3) -Bucket zu migrieren. Sie können dieses Muster verwenden, um eine einmalige Migration oder eine fortlaufende Synchronisation der Daten durchzuführen. Rclone ist ein in Go geschriebenes Befehlszeilenprogramm, das zum Verschieben von Daten zwischen verschiedenen Speichertechnologien von Cloud-Anbietern verwendet wird.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives Konto AWS

  • Daten, die im Azure Blob-Containerdienst gespeichert sind

Architektur

Quelltechnologie-Stack

  • Azure Blob-Speichercontainer

Zieltechnologie-Stack

  • Amazon-S3-Bucket

  • Linux-Instanz von Amazon Elastic Compute Cloud (AmazonEC2)

Architektur

Migrieren Sie Daten von Microsoft Azure zu Amazon S3

Tools

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Rclone ist ein Open-Source-Befehlszeilenprogramm, das von rsync inspiriert wurde. Es wird zur Verwaltung von Dateien auf vielen Cloud-Speicherplattformen verwendet.

Bewährte Methoden

Wenn Sie Daten von Azure zu Amazon S3 migrieren, sollten Sie die folgenden Überlegungen berücksichtigen, um unnötige Kosten oder langsame Übertragungsgeschwindigkeiten zu vermeiden:

  • Erstellen Sie Ihre AWS Infrastruktur in derselben geografischen Region wie das Azure-Speicherkonto und der Blob-Container, z. B. AWS Region us-east-1 (Nord-Virginia) und Azure-Region. East US

  • Vermeiden Sie nach Möglichkeit die Verwendung von NAT Gateway, da dadurch Datenübertragungsgebühren sowohl für die eingehende als auch für die ausgehende Bandbreite anfallen.

  • Verwenden Sie einen VPCGateway-Endpunkt für Amazon S3, um die Leistung zu steigern.

  • Erwägen Sie die Verwendung einer EC2 Instance auf Basis des AWS Graviton2 (ARM) -Prozessors, um im Vergleich zu Intel x86-Instances geringere Kosten und eine höhere Leistung zu erzielen. Rclone ist stark querkompiliert und stellt eine vorkompilierte Binärdatei bereit. ARM

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Bereiten Sie einen S3-Ziel-Bucket vor.

Erstellen Sie einen neuen S3-Bucket in der entsprechenden AWS Region oder wählen Sie einen vorhandenen Bucket als Ziel für die Daten, die Sie migrieren möchten.

AWSAdministrator

Erstellen Sie eine IAM Instance-Rolle für AmazonEC2.

Erstellen Sie eine neue AWS Identity and Access Management (IAM) -Rolle für Amazon EC2. Diese Rolle gewährt Ihrer EC2 Instance Schreibzugriff auf den S3-Ziel-Bucket.

AWSAdministrator

Fügen Sie der IAM Instanzrolle eine Richtlinie hinzu.

Verwenden Sie die IAM Konsole oder die AWS Befehlszeilenschnittstelle (AWSCLI), um eine Inline-Richtlinie für die EC2 Instance-Rolle zu erstellen, die Schreibzugriffsberechtigungen für den S3-Ziel-Bucket gewährt. Eine Beispielrichtlinie finden Sie im Abschnitt Zusätzliche Informationen.

AWSAdministrator

Starten einer EC2-Instance

Starten Sie eine Amazon EC2 Linux-Instance, die für die Verwendung der neu erstellten IAM Servicerolle konfiguriert ist. Diese Instanz benötigt außerdem Zugriff auf öffentliche API Azure-Endpunkte über das Internet. 

Hinweis: Erwägen Sie die Verwendung von AWSGraviton-basierten EC2 Instanzen, um die Kosten zu senken. Rclone stellt ARM -kompilierte Binärdateien bereit.

AWSAdministrator

Erstellen Sie einen Azure AD-Dienstprinzipal.

Verwenden Sie AzureCLI, um einen Azure Active Directory-Dienstprinzipal (Azure AD) zu erstellen, der nur Lesezugriff auf den Azure Blob-Quellspeichercontainer hat. Anweisungen finden Sie im Abschnitt Zusätzliche Informationen. Speichern Sie diese Anmeldeinformationen auf Ihrer EC2 Instance am Standort~/azure-principal.json.

Cloud-Administrator, Azure
AufgabeBeschreibungErforderliche Fähigkeiten

Downloaden und installieren Sie Rclone.

Laden Sie das Befehlszeilenprogramm Rclone herunter und installieren Sie es. Installationsanweisungen finden Sie in der Rclone-Installationsdokumentation.

AllgemeinAWS, Cloud-Administrator

Konfigurieren Sie Rclone.

Kopieren Sie die folgende rclone.conf Beispieldatei. AZStorageAccountErsetzen Sie es durch Ihren Azure Storage-Kontonamen und us-east-1 durch die AWS Region, in der sich Ihr S3-Bucket befindet. Speichern Sie diese Datei an dem Speicherort ~/.config/rclone/rclone.conf auf Ihrer EC2 Instanz.

[AZStorageAccount] type = azureblob account = AZStorageAccount service_principal_file = azure-principal.json [s3] type = s3 provider = AWS env_auth = true region = us-east-1
AllgemeinAWS, Cloud-Administrator

Überprüfen Sie die Rclone-Konfiguration.

Um sicherzustellen, dass Rclone konfiguriert ist und die Berechtigungen ordnungsgemäß funktionieren, stellen Sie sicher, dass Rclone Ihre Konfigurationsdatei analysieren kann und dass auf Objekte in Ihrem Azure Blob-Container und S3-Bucket zugegriffen werden kann. Im Folgenden finden Sie beispielsweise Validierungsbefehle.

  • Listet die konfigurierten Fernbedienungen in der Konfigurationsdatei auf. Dadurch wird sichergestellt, dass Ihre Konfigurationsdatei korrekt analysiert wird. Überprüfen Sie die Ausgabe, um sicherzustellen, dass sie mit Ihrer rclone.conf Datei übereinstimmt.

    rclone listremotes AZStorageAccount: s3:
  • Listet die Azure Blob-Container im konfigurierten Konto auf. AZStorageAccountErsetzen Sie es durch den Namen des Speicherkontos, den Sie in der rclone.conf Datei verwendet haben.

    rclone lsd AZStorageAccount: 2020-04-29 08:29:26 docs
  • Listet die Dateien im Azure Blob-Container auf. Ersetzen Sie die Dokumente in diesem Befehl durch einen tatsächlichen Blob-Container-Namen in Ihrem Azure-Speicherkonto.

    rclone ls AZStorageAccount:docs 824884 administrator-en.a4.pdf
  • Listet die Buckets in Ihrem AWS Konto auf.

    [root@ip-10-0-20-157 ~]# rclone lsd s3: 2022-03-07 01:44:40 examplebucket-01 2022-03-07 01:45:16 examplebucket-02 2022-03-07 02:12:07 examplebucket-03
  • Listet die Dateien im S3-Bucket auf.

    [root@ip-10-0-20-157 ~]# rclone ls s3:examplebucket-01 template0.yaml template1.yaml
AllgemeinAWS, Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Migrieren Sie Daten aus Ihren Containern.

Führen Sie den Befehl Rclone copy oder sync aus.  

Beispiel: Kopieren

Mit diesem Befehl werden Daten aus dem Azure-Blob-Quellcontainer in den S3-Ziel-Bucket kopiert.

rclone copy AZStorageAccount:blob-container s3:examplebucket-01

Beispiel: Sync

Dieser Befehl synchronisiert Daten zwischen dem Azure-Blob-Quellcontainer und dem Ziel-S3-Bucket.

rclone sync AZStorageAccount:blob-container s3:examplebucket-01

Wichtig: Wenn Sie den Sync-Befehl verwenden, werden Daten, die nicht im Quellcontainer vorhanden sind, aus dem S3-Ziel-Bucket gelöscht.

AllgemeinAWS, Cloud-Administrator

Synchronisieren Sie Ihre Container.

Führen Sie nach Abschluss der ersten Kopie den Befehl Rclone sync für die laufende Migration aus, sodass nur neue Dateien kopiert werden, die im S3-Ziel-Bucket fehlen.

AllgemeinAWS, Cloud-Administrator

Stellen Sie sicher, dass die Daten erfolgreich migriert wurden.

Führen Sie die Befehle Rclone lsd und ls aus, um zu überprüfen, ob die Daten erfolgreich in den Ziel-S3-Bucket kopiert wurden.

AllgemeinAWS, Cloud-Administrator

Zugehörige Ressourcen

Zusätzliche Informationen

Beispiel für eine Rollenrichtlinie für Instanzen EC2

Diese Richtlinie gewährt Ihrer EC2 Instance Lese- und Schreibzugriff auf einen bestimmten Bucket in Ihrem Konto. Wenn Ihr Bucket einen vom Kunden verwalteten Schlüssel für die serverseitige Verschlüsselung verwendet, benötigt die Richtlinie möglicherweise zusätzlichen Zugriff auf den AWS Key Management Service (AWSKMS).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME/*", "arn:aws:s3:::BUCKET_NAME" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" } ] }

Einen schreibgeschützten Azure AD-Dienstprinzipal erstellen

Ein Azure-Dienstprinzipal ist eine Sicherheitsidentität, die von Kundenanwendungen, Diensten und Automatisierungstools für den Zugriff auf bestimmte Azure-Ressourcen verwendet wird. Stellen Sie sich das als Benutzeridentität (Login und Passwort oder Zertifikat) mit einer bestimmten Rolle und streng kontrollierten Zugriffsberechtigungen für Ihre Ressourcen vor. Gehen Sie wie folgt vor, um einen schreibgeschützten Dienstprinzipal zu erstellen, der die geringsten Rechte einhält und Daten in Azure vor versehentlichem Löschen schützt:

  1. Melden Sie sich bei Ihrem Microsoft Azure-Cloud-Kontoportal an und starten Sie Cloud Shell in PowerShell oder verwenden Sie die Azure-Befehlszeilenschnittstelle (CLI) auf Ihrer Workstation.

  2. Erstellen Sie einen Dienstprinzipal und konfigurieren Sie ihn mit schreibgeschütztem Zugriff auf Ihr Azure BLOB-Speicherkonto. Speichern Sie die JSON Ausgabe dieses Befehls in einer lokalen Datei namens. azure-principal.json Die Datei wird auf Ihre EC2 Instanz hochgeladen. Ersetzen Sie die Platzhaltervariablen, die in geschweiften Klammern ({und}) angezeigt werden, durch Ihre Azure-Abonnement-ID, den Namen der Ressourcengruppe und den Namen des Speicherkontos.

    az ad sp create-for-rbac ` --name AWS-Rclone-Reader ` --role "Storage Blob Data Reader" ` --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}