Kopieren Sie Daten von einem S3-Bucket in ein anderes Konto und eine andere Region mithilfe der AWS CLI - 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.

Kopieren Sie Daten von einem S3-Bucket in ein anderes Konto und eine andere Region mithilfe der AWS CLI

Erstellt von Appasaheb Bagali () und Purushotham G K () AWS AWS

Umwelt: Produktion

Technologien: Speicher und Backup

AWSDienste: AWSCLI; AWS Identity and Access Management; Amazon S3

Übersicht

Dieses Muster beschreibt, wie Daten von einem Amazon Simple Storage Service (Amazon S3) -Bucket in einem AWS Quellkonto zu einem Ziel-S3-Bucket in einem anderen AWS Konto migriert werden, entweder in derselben AWS Region oder in einer anderen Region.

Der Quell-S3-Bucket ermöglicht den Zugriff auf AWS Identity and Access Management (IAM) mithilfe einer angehängten Ressourcenrichtlinie. Ein Benutzer im Zielkonto muss eine Rolle übernehmen, die über GetObject Berechtigungen für den Quell-Bucket verfügtPutObject. Schließlich führen copy Sie sync Befehle aus, um Daten vom S3-Quell-Bucket in den S3-Ziel-Bucket zu übertragen.

Konten sind Eigentümer der Objekte, die sie in S3-Buckets hochladen. Wenn Sie Objekte zwischen Konten und Regionen kopieren, gewähren Sie dem Zielkonto das Eigentum an den kopierten Objekten. Sie können die Eigentümerschaft eines Objekts ändern, indem Sie dessen Zugriffskontrollliste (ACL) auf ändernbucket-owner-full-control. Es wird jedoch empfohlen, dem Zielkonto kontenübergreifende programmatische Berechtigungen zu gewähren, da die Verwaltung mehrerer Objekte schwierig sein ACLs kann.

Warnung: Für dieses Szenario sind IAM Benutzer mit programmatischem Zugriff und langfristigen Anmeldeinformationen erforderlich, was ein Sicherheitsrisiko darstellt. Um dieses Risiko zu minimieren, empfehlen wir, diesen Benutzern nur die Berechtigungen zu gewähren, die sie für die Ausführung der Aufgabe benötigen, und diese Benutzer zu entfernen, wenn sie nicht mehr benötigt werden. Zugriffsschlüssel können bei Bedarf aktualisiert werden. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Aktualisieren von Zugriffsschlüsseln.

Dieses Muster deckt eine einmalige Migration ab. Für Szenarien, die eine kontinuierliche und automatische Migration neuer Objekte von einem Quell-Bucket zu einem Ziel-Bucket erfordern, können Sie stattdessen die S3-Batch-Replikation verwenden, wie im Muster Kopieren von Daten aus einem S3-Bucket in ein anderes Konto und eine andere Region mithilfe von S3 Batch Replication beschrieben.

Voraussetzungen und Einschränkungen

  • Zwei aktive AWS Konten in derselben oder unterschiedlichen AWS Regionen.

  • Ein vorhandener S3-Bucket im Quellkonto. 

  • Wenn in Ihrem Amazon S3 S3-Quell- oder Ziel-Bucket die Standardverschlüsselung aktiviert ist, müssen Sie die AWS Schlüsselberechtigungen für den Key Management Service (AWSKMS) ändern. Weitere Informationen finden Sie im AWSre:POST-Artikel zu diesem Thema.

  • Vertrautheit mit kontoübergreifenden Berechtigungen.

Architektur

Amazon S3 S3-Daten in ein anderes Konto oder eine andere Region kopieren

Tools

Bewährte Methoden

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen IAM Benutzer und holen Sie sich den Zugriffsschlüssel.

  1. Melden Sie sich bei der AWS Management Console an und erstellen Sie einen IAM Benutzer mit programmatischem Zugriff. Eine ausführliche Anleitung finden Sie in der IAM Dokumentation unter IAMBenutzer erstellen. Es ist nicht erforderlich, Richtlinien für diesen Benutzer anzuhängen.

  2. Generieren Sie einen Zugriffsschlüssel und einen geheimen Schlüssel für diesen Benutzer. Anweisungen finden Sie in der AWS Dokumentation unter AWSKonto- und Zugriffsschlüssel.

AWS DevOps

Erstellen Sie eine IAM identitätsbasierte Richtlinie.

Erstellen Sie eine IAM identitätsbasierte Richtlinie, die mit den folgenden Berechtigungen benannt S3MigrationPolicy ist. Eine ausführliche Anleitung dazu finden Sie in der IAM Dokumentation unter IAMRichtlinien erstellen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexamplesourcebucket", "arn:aws:s3:::awsexamplesourcebucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexampledestinationbucket", "arn:aws:s3:::awsexampledestinationbucket/*" ] } ] }

Hinweis: Ändern Sie die Quell- und Ziel-Bucket-Namen entsprechend Ihrem Anwendungsfall.

Diese identitätsbasierte Richtlinie ermöglicht es dem Benutzer, der diese Rolle übernimmt, auf den Quell-Bucket und den Ziel-Bucket zuzugreifen.

AWS DevOps

Erstellen Sie eine RolleIAM.

Erstellen Sie eine IAM Rolle, die S3MigrationRole nach der folgenden Vertrauensrichtlinie benannt ist, und hängen Sie dann die zuvor erstellte Rolle anS3MigrationPolicy. Ausführliche Schritte finden Sie in der IAM Dokumentation unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM Benutzer.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<destination_account>:user/<user_name>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Hinweis: Ändern Sie den Amazon-Ressourcennamen (ARN) der IAM Zielrolle oder den Benutzernamen in der Vertrauensrichtlinie entsprechend Ihrem Anwendungsfall.

Diese Vertrauensrichtlinie ermöglicht es dem neu erstellten IAM Benutzer, zu übernehmenS3MigrationRole.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine S3-Bucket-Richtlinie und fügen Sie sie an.

Melden Sie sich bei der AWS Management Console für Ihr Quellkonto an und öffnen Sie die Amazon S3 S3-Konsole. Wählen Sie Ihren S3-Quell-Bucket und dann Permissions aus. Wählen Sie unter Bucket-Richtlinie die Option Bearbeiten aus und fügen Sie dann die folgende Bucket-Richtlinie ein. Wählen Sie Save (Speichern) aus.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexamplesourcebucket/*", "arn:aws:s3:::awsexamplesourcebucket" ] } ] }

Hinweis: Stellen Sie sicher, dass Sie die AWS Konto-ID für das Zielkonto angeben, und konfigurieren Sie die Bucket-Richtlinienvorlage gemäß Ihren Anforderungen.

Diese ressourcenbasierte Richtlinie ermöglicht der Zielrolle den S3MigrationRole Zugriff auf S3-Objekte im Quellkonto.

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen S3-Ziel-Bucket.

Melden Sie sich bei der AWS Management Console für Ihr Zielkonto an, öffnen Sie die Amazon S3 S3-Konsole und wählen Sie dann Create Bucket aus. Erstellen Sie einen S3-Bucket gemäß Ihren Anforderungen. Weitere Informationen finden Sie in der Amazon S3 S3-Dokumentation unter Bucket erstellen

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie AWS CLI mit den neu erstellten Benutzeranmeldedaten.

  1. Installieren Sie die neueste Version von AWSCLI. Anweisungen finden Sie in der AWS CLI Dokumentation unter Installation oder Aktualisierung AWS CLI der neuesten Version von.

  2. Führen Sie das $ aws configure Programm aus und aktualisieren Sie es CLI mit dem AWS Zugriffsschlüssel des Benutzers, den Sie erstellt haben. Weitere Informationen finden Sie in der AWS CLI Dokumentation unter Einstellungen für Konfiguration und Anmeldeinformationsdatei.

AWS DevOps

Nehmen Sie die S3-Migrationsrolle an.

  1. Verwenden Sie die AWSCLI, um Folgendes anzunehmenS3MigrationRole:

    aws sts assume-role \ --role-arn "arn:aws:iam::<destination_account>:role/S3MigrationRole" \ --role-session-name AWSCLI-Session

    Dieser Befehl gibt mehrere Informationen aus. Innerhalb des Anmeldeinformationsblocks benötigen Sie das AccessKeyIdSecretAccessKey, undSessionToken. In diesem Beispiel werden die Umgebungsvariablen RoleAccessKeyIDRoleSecretKey, und verwendetRoleSessionToken. Beachten Sie, dass sich der Zeitstempel des Ablauffeldes in der UTC Zeitzone befindet. Der Zeitstempel gibt an, wann die temporären Anmeldeinformationen der IAM Rolle ablaufen. Wenn die temporären Anmeldeinformationen ablaufen, müssen Sie die sts:AssumeRole API erneut aufrufen.

  2. Erstellen Sie drei Umgebungsvariablen, um die IAM Rolle zu übernehmen. Diese Umgebungsvariablen werden mit der folgenden Ausgabe gefüllt:

    # Linux export AWS_ACCESS_KEY_ID=RoleAccessKeyID export AWS_SECRET_ACCESS_KEY=RoleSecretKey export AWS_SESSION_TOKEN=RoleSessionToken # Windows set AWS_ACCESS_KEY_ID=RoleAccessKeyID set AWS_SECRET_ACCESS_KEY=RoleSecretKey set AWS_SESSION_TOKEN=RoleSessionToken
  3. Stellen Sie sicher, dass Sie die IAM Rolle übernommen haben, indem Sie den folgenden Befehl ausführen:

    aws sts get-caller-identity

Weitere Informationen finden Sie im AWSKnowledge Center.

AWSAdministrator

Kopieren und synchronisieren Sie Daten aus dem S3-Quell-Bucket in den S3-Ziel-Bucket.

Wenn Sie die Rolle übernommen haben, können S3MigrationRole Sie die Daten mit dem Befehl copy (cp) oder synchronize (sync) kopieren.

Kopieren (Einzelheiten finden Sie in der AWSCLIBefehlsreferenz):

aws s3 cp s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Synchronisieren (Einzelheiten finden Sie in der AWSCLIBefehlsreferenz):

aws s3 sync s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Cloud-Administrator

Fehlerbehebung

ProblemLösung

Beim Aufrufen des ListObjects Vorgangs ist ein Fehler aufgetreten (AccessDenied): Zugriff verweigert

  • Stellen Sie sicher, dass Sie die Rolle übernommen habenS3MigrationRole.

  • Führen Sie aws sts get-caller-identity den Befehl aus, um die verwendete Rolle zu überprüfen. Wenn in der Ausgabe das ARN für nicht angezeigt wirdS3MigrationRole, nehmen Sie die Rolle erneut an und versuchen Sie es erneut.

Zugehörige Ressourcen