Warum kann ich kein Objekt zwischen zwei Amazon-S3-Buckets kopieren?
Ich möchte ein Objekt von einem Amazon Simple Storage Service (Amazon S3)-Bucket in einen anderen kopieren, kann es aber nicht.
Behebung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Bucket-Richtlinien und IAM-Richtlinien
Um ein Objekt zwischen Buckets zu kopieren, stelle sicher, dass du die richtigen Berechtigungen konfiguriert hast. Um ein Objekt zwischen Buckets im selben AWS-Konto zu kopieren, verwende die AWS Identity and Access Management (IAM)-Richtlinien, um Berechtigungen festzulegen. Um ein Objekt zwischen Buckets in verschiedenen Konten zu kopieren, musst du Berechtigungen sowohl für die entsprechenden IAM-Richtlinien als auch für Bucket-Richtlinien festlegen.
Hinweis: Eine Anleitung zum Ändern einer Bucket-Richtlinie findest du unter Hinzufügen einer Bucket-Richtlinie mithilfe der Amazon-S3-Konsole. Eine Anleitung zum Ändern der Berechtigungen für IAM-Benutzer findest du unter Ändern der Berechtigungen für IAM-Benutzer. Eine Anleitung zum Ändern der Berechtigungen für eine IAM-Rolle findest du unter Aktualisieren von Berechtigungen für eine Rolle.
Bestätige die erforderlichen Berechtigungen:
- Die IAM-Identität (Benutzer:in oder Rolle) muss zumindest über Berechtigungen für die s3:GetObject-Aktion im Quell-Bucket verfügen. Wenn sich die Buckets im selben Konto befinden, lege diese Berechtigungen mit der Richtlinie der IAM-Identität fest. Du kannst die IAM-Identität auch explizit in der S3-Bucket-Richtlinie zulassen. Wenn sich die Buckets in verschiedenen Konten befinden, lege diese Berechtigungen sowohl mit der Bucket-Richtlinie als auch mit den Richtlinien der IAM-Identität fest.
- Die IAM-Identität muss zumindest über Berechtigungen für die s3:PutObject-Aktion im Ziel-Bucket verfügen. Wenn sich die Buckets im selben Konto befinden, lege diese Berechtigungen mit der Richtlinie der IAM-Identität fest. Du kannst die IAM-Identität auch explizit in der S3-Bucket-Richtlinie zulassen. Wenn sich die Buckets in verschiedenen Konten befinden, lege diese Berechtigungen sowohl mit der Bucket-Richtlinie als auch mit den Richtlinien der IAM-Identität fest.
- Überprüfe die relevanten Bucket-Richtlinien und IAM-Richtlinien, um sicherzustellen, dass keine expliziten Ablehnungsanweisungen vorliegen, die im Konflikt mit den von dir benötigten Berechtigungen stehen. Eine explizite Ablehnungsanweisung hat Vorrang vor einer Zulassungsanweisung.
- Stelle für bestimmte Vorgänge sicher, dass die IAM-Identität über Berechtigungen für alle erforderlichen Aktionen innerhalb des Vorgangs verfügt. Um beispielsweise den Befehl aws s3 cp auszuführen, benötigst du die Berechtigung s3:GetObject und s3:PutObject. Um den Befehl aws s3 cp mit der Option --recursive auszuführen, benötigst du die Berechtigung s3:GetObject, s3:PutObject und s3:ListBucket. Um den Befehl aws s3 sync auszuführen, benötigst du die Berechtigung s3:GetObject, s3:PutObject und s3:ListBucket.
Hinweis: Wenn du den AssumeRole-API-Vorgang für den Zugriff auf Amazon S3 verwendest, stelle sicher, dass du die Vertrauensbeziehung richtig konfiguriert hast. - Vergewissere dich bei versionsspezifischen Vorgängen, dass die IAM-Identität über Berechtigungen für versionsspezifische Aktionen verfügt. Um beispielsweise eine bestimmte Version eines Objekts zu kopieren, benötigst du die Berechtigung für s3:GetObjectVersion und s3:GetObject.
- Um Objekte mit Objekt-Tags zu kopieren, muss die IAM-Identität über die Berechtigungen s3:GetObjectTagging und s3:PutObjectTagging verfügen. Du musst die s3:GetObjectTagging-Berechtigung für das Quellobjekt und die s3:PutObjectTagging-Berechtigung für Objekte im Ziel-Bucket haben.
- Überprüfe die relevanten Bucket-Richtlinien und IAM-Richtlinien, um sicherzustellen, dass das Ressourcenelement den richtigen Pfad hat. Bei Berechtigungen auf Bucket-Ebene muss das Ressourcenelement auf einen Bucket verweisen. Bei Berechtigungen auf Objektebene muss das Ressourcenelement auf ein oder mehrere Objekte verweisen.
Beispielsweise muss eine Richtlinienanweisung für eine Aktion auf Bucket-Ebene wie s3:ListBucket einen Bucket im Ressourcenelement angeben:
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
Eine Richtlinienanweisung für Aktionen auf Objektebene wie s3:GetObject oder s3:PutObject muss ein oder mehrere Objekte im Ressourcenelement angeben:
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
Objekteigentum
Wenn die Bucket-Richtlinien die richtigen Berechtigungen haben und du immer noch kein Objekt zwischen Buckets kopieren kannst, überprüfe, welchem Konto das Objekt gehört. Die Bucket-Richtlinie gilt nur für Objekte, die dem Bucket-Eigentümer gehören. Ein Objekt, das zu einem anderen Konto gehört, hat möglicherweise in Konflikt stehende Berechtigungen in seiner Zugriffssteuerungsliste (ACL).
Hinweis: Das Problem mit Objekteigentum und ACL tritt in der Regel auf, wenn du AWS-Serviceprotokolle kontoübergreifend kopierst. Beispiele für Serviceprotokolle sind AWS-CloudTrail-Protokolle und Elastic-Load-Balancing-Zugriffsprotokolle.
Gehe wie folgt vor, um das Konto zu finden, dem ein Objekt gehört:
- Öffne die Amazon-S3-Konsole.
- Navigiere zu dem Objekt, das du nicht zwischen Buckets kopieren kannst.
- Wähle die Registerkarte Berechtigungen des Objekts.
- Überprüfe die Werte unter Empfänger.
Wenn dein Konto Eigentümer des Objekts ist, dann enthält die Kanonische ID unter Empfänger für Objekteigentümer (Dein AWS-Konto) dein AWS-Konto. Wenn das Objekt einem anderen Konto gehört und du auf das Objekt zugreifen kannst, gilt Folgendes:
- Die **Kanonische ID ** unter Objekteigentümer (Dein AWS-Konto) enthält ein externes Konto.
- Die Kanonische ID unter der Authenticated users group (anyone with an AWS account) (Gruppe äuthentifizierter Benutzer (alle mit einem AWS-Konto)) enthält dein AWS-Konto.
Wenn ein Objekt, auf das du nicht zugreifen kannst, einem anderen Konto gehört, sind die Felder der Kanonischen ID für den Objekteigentümer (Dein AWS-Konto) und andere Empfänger leer.
Wenn das Objekt, das du nicht zwischen Buckets kopieren kannst, einem anderen Konto gehört, kann der Objekteigentümer eine der folgenden Optionen ausführen:
- Der Objekteigentümer kann dem Bucket-Eigentümer die volle Kontrolle über das Objekt gewähren. Sobald der Bucket-Eigentümer das Objekt besitzt, gilt die Bucket-Richtlinie für das Objekt. Als bewährte Sicherheitsmaßnahme kann der Bucket-Eigentümer die Bucket-ACLs deaktivieren, um das Objekteigentum auf „Bucket-Eigentümer erzwungen“ festzulegen.
- Der/Die Objekteigentümer:in kann das Eigentum am Objekt behalten, aber er/sie muss die ACL auf die Einstellungen ändern, die du für den Anwendungsfall benötigst.
AWS-KMS-Verschlüsselung
Ein Objekt ist möglicherweise mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt. Vergewissere dich in diesem Fall, dass die IAM-Identität über die richtigen Berechtigungen für den Schlüssel verfügt. Wenn die IAM-Identität und der AWS-KMS-Schlüssel zu demselben Konto gehören, stelle sicher, dass die Schlüsselrichtlinie die erforderlichen AWS-KMS-Berechtigungen gewährt.
Wenn die IAM-Identität und die AWS-KMS-Schlüssel zu unterschiedlichen Konten gehören, stelle sicher, dass sowohl der Schlüssel als auch die IAM-Richtlinien die erforderlichen Berechtigungen gewähren.
Wenn du beispielsweise Objekte zwischen zwei Buckets kopierst (und jeder Bucket seinen eigenen Schlüssel hat), muss die IAM-Identität die folgenden Berechtigungen angeben:
- kms:Decrypt-Berechtigungen, die auf den ersten KMS-Schlüssel verweisen
- Die Berechtigungen kms:GenerateDataKey und kms:Decrypt, die auf den zweiten KMS-Schlüssel verweisen
Weitere Informationen findest du unter Schlüsselrichtlinien in AWS KMS und unter Aktionen, Ressourcen and Bedingungsschlüssel für AWS Key Management Service.
Amazon-Archive-Speicherklassen oder Amazon-Glacier- und Intelligent-Archive-Speicherklassen
Du kannst kein Objekt aus der Amazon-S3-Glacier-Speicherklasse kopieren. Du musst das Objekt zuerst aus Amazon S3 Glacier wiederherstellen, bevor du das Objekt kopieren kannst. Eine Anleitung findest du unter Wiederherstellen eines archivierten Objekts.
„Zahlung durch den Anforderer“ ist im Bucket aktiviert
Wenn im Quell- oder Ziel-Bucket Zahlung durch den Anforderer aktiviert ist und du von einem anderen Konto aus auf den Bucket zugreifen möchtest, überprüfe die Anforderung. Vergewissere dich, dass die Anforderung den richtigen Parameter „Zahlung durch den Anforderer“ enthält:
- Füge für Befehle der AWS Command Line Interface (AWS CLI) die Option --request-payer hinzu.
- Gib für GET-, HEAD- und POST-Anforderungen x-amz-request-payer : requester ein.
- Füge für signierte URLs x-amz-request-payer=requester ein.
Service-Kontrollrichtlinie von AWS Organizations
Wenn du AWS Organizations verwendest, überprüfe die Service-Kontrollrichtlinien, um sicherzustellen, dass sie den Zugriff auf Amazon S3 zulassen.
Diese Richtlinie führt beispielsweise zu einem Fehler „403 Forbidden“, wenn du versuchst, auf Amazon S3 zuzugreifen. Dies liegt daran, dass der Zugriff explizit verweigert wird:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "S3:*", "Resource": "*" } ] }
Weitere Informationen zu den Funktionen von AWS Organizations findest du unter Alle Funktionen in der Organisation aktivieren.
Regionsübergreifende Anforderungsprobleme mit VPC-Endpunkten für Amazon S3
VPC-Endpunkte für Amazon S3 unterstützen keine Anforderungen in verschiedenen AWS-Regionen. Angenommen, du hast eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance in Region A. Diese Instance hat einen Virtual Private Cloud (VPC)-Endpunkt, der in der zugehörigen Routing-Tabelle konfiguriert ist. Die EC2-Instance kann kein Objekt aus Region B in einen Bucket in Region A kopieren. Stattdessen erhältst du eine Fehlermeldung, die diesem Beispiel ähnelt:
"An error occurred (AccessDenied) when calling the CopyObject operation: VPC endpoints do not support cross-region requests"
Verwende die folgenden Methoden, um dieses regionsübergreifende Anforderungsproblem zu beheben:
- Entferne den VPC-Endpunkt aus der Routing-Tabelle. Wenn du den VPC-Endpunkt entfernst, muss die Instance stattdessen eine Verbindung zum Internet herstellen können.
- Führe den Copy-Befehl von einer anderen Instance aus, die den VPC-Endpunkt nicht verwendet. Oder führe den Copy-Befehl von einer Instance aus, die sich weder in Region A noch in Region B befindet.
- Wenn du den VPC-Endpunkt verwenden musst, sende zunächst eine GET-Anforderung, um das Objekt aus dem Quell-Bucket in die EC2-Instance zu kopieren. Sende dann eine PUT-Anforderung, um das Objekt von der EC2-Instance in den Ziel-Bucket zu kopieren.
Ähnliche Informationen
- Themen
- Storage
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 2 Jahren