View a markdown version of this page

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

Appasaheb Bagali und Purushotham GK, Amazon Web Services

Zusammenfassung

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

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

Konten sind Eigentümer der Objekte, die sie in Amazon S3 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 programmgesteuerte kontoübergreifende Berechtigungen zu gewähren, da es schwierig sein ACLs kann, mehrere Objekte zu verwalten.

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. Die Zugriffsschlüssel können bei Bedarf aktualisiert werden. Weitere Informationen finden Sie in der IAM-Dokumentation unter Aktualisieren von Zugriffsschlüsseln.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Zwei sind AWS-Konten im selben oder unterschiedlichen AWS-Regionen Modus aktiv.

  • Ein vorhandener Amazon S3 S3-Bucket im Quellkonto. 

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

  • Vertrautheit mit kontoübergreifenden Berechtigungen.

Einschränkungen

  • 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 Amazon S3 Batch Replication verwenden.

  • Dieses Muster verwendet temporäre und nicht persistente Sitzungsanmeldedaten (AccessKeyId, undSessionToken). SecretAccessKey Der Ablaufzeitstempel in der Ausgabe gibt an, wann diese Anmeldeinformationen ablaufen. Die Rolle ist mit der maximalen Sitzungsdauer konfiguriert. Der Kopierauftrag wird abgebrochen, wenn die Sitzung abläuft.

Architektur

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

Tools

Best Practices

Epen

AufgabeDescriptionErforderliche Fähigkeiten

Erstellen Sie einen IAM-Benutzer und rufen Sie den Zugriffsschlüssel ab.

  1. Melden Sie sich bei dem an AWS-Managementkonsole und erstellen Sie einen IAM-Benutzer mit programmatischem Zugriff. Eine ausführliche Anleitung finden Sie in der IAM-Dokumentation unter IAM-Benutzer 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 dazu finden Sie in der AWS Dokumentation unter AWS-Konto und unter Zugriffstasten.

AWS DevOps

Erstellen Sie eine identitätsbasierte IAM-Richtlinie.

Erstellen Sie eine identitätsbasierte IAM-Richtlinie, die mit den folgenden Berechtigungen benannt S3MigrationPolicy ist. Ä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. Ausführliche Anweisungen finden Sie in der IAM-Dokumentation unter Erstellen von IAM-Richtlinien.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListObjectsV2", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket", "arn:aws:s3:::amazon-s3-demo-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:ListObjectsV2", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-destination-bucket", "arn:aws:s3:::amazon-s3-demo-destination-bucket/*" ] } ] }
AWS DevOps

Erstellen Sie eine IAM-Rolle.

Erstellen Sie eine IAM-Rolle, die S3MigrationRole mithilfe der folgenden Vertrauensrichtlinie benannt ist. Ändern Sie den Amazon-Ressourcennamen (ARN) der Ziel-IAM-Rolle oder den Benutzernamen in der Vertrauensrichtlinie entsprechend Ihrem Anwendungsfall. Diese Vertrauensrichtlinie ermöglicht es dem neu erstellten IAM-Benutzer, zu übernehmen. S3MigrationRole Hängen Sie das zuvor erstellte S3MigrationPolicy an. Ausführliche Schritte finden Sie in der IAM-Dokumentation unter Eine Rolle erstellen, um Berechtigungen an einen IAM-Benutzer zu delegieren.

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

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

  1. Melden Sie sich AWS-Managementkonsole bei Ihrem Quellkonto an und öffnen Sie die Amazon S3 S3-Konsole.

  2. Wählen Sie Ihren Amazon S3 S3-Quell-Bucket und dann Permissions aus.

  3. Wählen Sie unter Bucket-Richtlinie Bearbeiten aus.

  4. Fügen Sie die folgende Bucket-Richtlinie ein. 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 Amazon S3 S3-Objekte im Quellkonto.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:ListObjectsV2", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket/*", "arn:aws:s3:::amazon-s3-demo-source-bucket" ] } ] }
  5. Wählen Sie Speichern.

Cloud-Administrator
AufgabeDescriptionErforderliche Fähigkeiten

Erstellen Sie einen Amazon S3-Ziel-Bucket.

  1. Melden Sie sich AWS-Managementkonsole bei Ihrem Zielkonto an und öffnen Sie die Amazon S3 S3-Konsole.

  2. Wählen Sie Create Bucket (Bucket erstellen) aus.

  3. Erstellen Sie einen Amazon S3 S3-Bucket gemäß Ihren Anforderungen. Weitere Informationen finden Sie unter Bucket erstellen in der Amazon S3 S3-Dokumentation. 

Cloud-Administrator
AufgabeDescriptionErforderliche Fähigkeiten

Konfigurieren Sie das AWS CLI mit den neu erstellten Benutzeranmeldeinformationen.

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

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

AWS DevOps

Nehmen Sie die Amazon S3 S3-Migrationsrolle an.

  1. Verwenden Sie die AWS CLI , um Folgendes anzunehmenS3MigrationRole:

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

    Dieser Befehl gibt mehrere Informationen aus. Innerhalb des Anmeldeinformationsblocks benötigen Sie das AccessKeyIdSecretAccessKey, undSessionToken. In diesem Beispiel werden die Umgebungsvariablen RoleAccessKeyIDRoleSecretKey, und verwendetRoleSessionToken. : Die Sitzungsanmeldedaten (AccessKeyIdSecretAccessKey, undSessionToken) sind temporär und nicht persistent. Der Ablaufzeitstempel in der Ausgabe gibt an, wann diese Anmeldeinformationen ablaufen. Die Rolle ist mit der maximalen Sitzungsdauer konfiguriert. Wenn die Anmeldeinformationen ablaufen, müssen Sie sts:AssumeRole erneut anrufen, um neue temporäre Anmeldeinformationen zu erhalten.

  2. Erstellen Sie drei Umgebungsvariablen, um die IAM-Rolle zu übernehmen. Diese Umgebungsvariablen werden mit der folgenden Ausgabe vervollständigt:

    # Linux export AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> export AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> export AWS_SESSION_TOKEN=<RoleSessionToken from command output> # Windows set AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> set AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> set AWS_SESSION_TOKEN=<RoleSessionToken from command output>
  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 unter Wie verwende ich die, AWS CLI um eine IAM-Rolle anzunehmen?

AWS-Administrator

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

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

Kopieren:

aws s3 cp s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Synchronisieren:

aws s3 sync s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Cloud-Administrator

Fehlerbehebung

ProblemLösung

Beim Aufrufen der ListObjects Operation ist ein Fehler aufgetreten (AccessDenied)

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

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

Zugehörige Ressourcen