Ändern des Replikat-Eigentümers
Bei der Replikation besitzt der Eigentümer des Quellobjekts standardmäßig auch das Replikat. Wenn sich Quell- und Ziel-Bucket jedoch im Besitz unterschiedlicher AWS-Konten befinden, möchten Sie die Replikat-Eigentümerschaft möglicherweise ändern. Vielleicht möchten Sie beispielsweise die Eigentümerschaft ändern, um den Zugriff auf Objektreplikate einzuschränken. In Ihrer Replikationskonfiguration können Sie optionale Konfigurationseinstellungen hinzufügen, um die Replikateigentümerschaft zu dem AWS-Konto zu ändern, das die Ziel-Buckets besitzt.
Gehen Sie wie folgt vor, um den Replikateigentümer zu ändern:
-
Fügen Sie die Option zum Überschreiben des Eigentümers zur Replikationskonfiguration hinzu, um Amazon S3 anzuweisen, die Replikat-Eigentümerschaft zu ändern.
-
Erteilen Sie Amazon S3 die Berechtigung
s3:ObjectOwnerOverrideToBucketOwnerzum Ändern der Replikat-Eigentümerschaft. -
Fügen Sie die Berechtigung
s3:ObjectOwnerOverrideToBucketOwnerzur Richtlinie für den Ziel-Bucket hinzu, um das Ändern der Replikateigentümerschaft zuzulassen. Die Berechtigungs3:ObjectOwnerOverrideToBucketOwnerermöglicht es dem Eigentümer der Ziel-Buckets, die Eigentümerschaft von Objektreplikaten anzunehmen.
Weitere Informationen finden Sie unter Überlegungen zur Option zum Überschreiben der Eigentümerschaft und Hinzufügen der Eigentümer-Überschreibungs-Option zur Replikations-Konfiguration. Ein funktionierendes Beispiel mit Schritt-für-Schritt-Anleitungen finden Sie unter So ändern Sie den Replikateigentümer.
Wichtig
Anstatt die Option zum Überschreiben des Eigentümers zu verwenden, können Sie die Einstellung zum Erzwingen des Bucket-Eigentümers für die Objekteigentümerschaft verwenden. Wenn Sie die Replikation verwenden und die Quell- und Ziel-Buckets unterschiedlichen AWS-Konten gehören, kann der Bucket-Eigentümer des Ziel-Buckets die Einstellung zum Erzwingen des Bucket-Eigentümers für die Objekteigentümerschaft verwenden, um den Replikat-Eigentümer auf das AWS-Konto zu ändern, das den Ziel-Bucket besitzt. Diese Einstellung deaktiviert Zugriffssteuerungslisten (ACL).
Die Einstellung zum Erzwingen des Bucket-Eigentümers ahmt das Verhalten der Überschreibung des bestehenden Eigentümers nach, ohne dass eine s3:ObjectOwnerOverrideToBucketOwner-Berechtigung erforderlich ist. Alle Objekte, die mit der Einstellung „Bucket-Eigentümer erzwungen“ in den Ziel-Bucket repliziert werden, gehören dem Eigentümer des Ziel-Buckets. Informationen zu Object Ownership finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..
Überlegungen zur Option zum Überschreiben der Eigentümerschaft
Wenn Sie die Option zum Überschreiben der Eigentümerschaft konfigurieren, berücksichtigen Sie die folgenden Überlegungen:
-
Standardmäßig besitzt der Eigentümer des Quellobjekts auch das Replikat. Amazon S3 repliziert die Objektversion und die damit verbundene ACL.
Wenn Sie die Option zum Überschreiben der Eigentümerschaft zu Ihrer Replikationskonfiguration hinzufügen, repliziert Amazon S3 nur die Objektversion, nicht die ACL. Darüber hinaus repliziert Amazon S3 keine nachfolgenden Änderungen an der ACL des Quellobjekts. Amazon S3 legt die ACL für das Replikat fest, das dem Ziel-Bucket-Eigentümer Vollzugriff erteilt.
-
Wenn Sie eine Replikationskonfiguration ändern, um die Option zum Überschreiben der Eigentümerschaft zu aktivieren oder zu deaktivieren, tritt folgendes Verhalten ein:
-
Wenn Sie die Option zur Überschreibung des Eigentümers zur Replikationskonfiguration hinzufügen
Wenn Amazon S3 eine Objektversion repliziert, verwirft es die ACL, die mit dem Quellobjekt verknüpft ist. Amazon S3 legt stattdessen die ACL für das Replikat fest, sodass der Ziel-Bucket-Eigentümer vollständige Kontrolle erhält. Amazon S3 repliziert keine nachfolgenden Änderungen an der ACL des Quellobjekts. Diese Änderung der ACL gilt nicht für Objektversionen, die repliziert wurden, bevor Sie die Eigentümer-Überschreibungs-Option festgelegt haben. ACL-Aktualisierungen an den Quellobjekten, die repliziert wurden, bevor die Eigentümer-Überschreibungs-Option festgelegt wurde, werden weiterhin repliziert (da das Objekt und seine Replikate weiterhin denselben Eigentümer haben).
-
Wenn Sie die Eigentümer-Überschreibungs-Option aus der Replikations-Konfiguration entfernen
Amazon S3 repliziert neue Objekte, die im Quell-Bucket erscheinen, und die zugehörigen ACLs in die Ziel-Buckets. Bei Objekten, die repliziert wurden, bevor Sie die Eigentümer-Überschreibung entfernt haben, repliziert Amazon S3 die ACLs nicht, da die Änderung der Objekteigentümerschaft, die Amazon S3 vorgenommen hat, gültig bleibt. Das bedeutet, dass in der Objektversion abgelegte ACLs, die repliziert wurden, als Sie die Eigentümer-Überschreibungs-Option festgelegt hatten, weiterhin nicht repliziert werden.
-
Hinzufügen der Eigentümer-Überschreibungs-Option zur Replikations-Konfiguration
Warnung
Fügen Sie die Eigentümer-Überschreibung nur dann hinzu, wenn die Quell- und Ziel-Buckets im Besitz von unterschiedlichen sind AWS-Konten. Amazon S3 überprüft nicht, ob die Buckets im Besitz von gleichen oder unterschiedlichen Konten sind. Falls Sie die Eigentümer-Überschreibung hinzufügen, wenn sich beide Buckets im Besitz desselben AWS-Konto befinden, wendet Amazon S3 die Eigentümer-Überschreibung an. Diese Option erteilt dem Eigentümer des Ziel-Buckets vollständige Berechtigungen und repliziert keine nachfolgenden Aktualisierungen der Zugriffssteuerungslisten (ACL) der Quellobjekte. Der Replikat-Eigentümer kann die ACL, die mit einem Replikat mit einer PutObjectAcl-Anforderung verknüpft ist, direkt ändern, aber nicht über eine Replikation.
Um die Option zur Eigentümer-Überschreibung festzulegen, fügen Sie Folgendes zu jedem Destination-Element hinzu:
-
Das Element
AccessControlTranslation, das Amazon S3 anweist, die Replikat-Eigentümerschaft zu ändern -
Das
Account-Element, das das AWS-Konto des Ziel-Bucket-Eigentümers angibt
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ... <Destination> ... <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> <Account>destination-bucket-owner-account-id</Account> </Destination> </Rule> </ReplicationConfiguration>
Die folgende Beispiel-Replikations-Konfiguration weist Amazon S3 an, Objekte mit dem Schlüsselpräfix in den Ziel-Bucket Tax zu replizieren und die Replikat-Eigentümerschaft zu ändern. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die amzn-s3-demo-destination-bucket (Platzhalter für Benutzereingaben) durch Ihre Informationen.user input
placeholders
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>
Erteilen der Berechtigung zur Änderung der Replikat-Eigentümerschaft an Amazon S3
Erteilen Sie Amazon S3 die Berechtigungen zum Ändern der Replikat-Eigentümerschaft, indem Sie die Berechtigung für die Aktion s3:ObjectOwnerOverrideToBucketOwner zur Berechtigungsrichtlinie hinzufügen, die mit der AWS Identity and Access Management(IAM)-Rolle verknüpft ist. Diese Rolle ist die IAM-Rolle, die Sie in der Replikations-Konfiguration festgelegt haben und die es Amazon S3 gestattet, Objekte in Ihrem Namen anzunehmen und zu replizieren. Um das folgende Beispiel zu verwenden, ersetzen Sie durch den Namen des Ziel-Buckets.amzn-s3-demo-destination-bucket
... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...
Hinzufügen der Berechtigung zur Ziel-Bucket-Richtlinie, um das Ändern der Replikat-Eigentümerschaft zuzulassen
Der Eigentümer des Ziel-Buckets muss dem Eigentümer des Quell-Buckets die Berechtigung zum Ändern der Replikat-Eigentümerschaft erteilen. Der Eigentümer des Ziel-Buckets erteilt dem Eigentümer des Quell-Buckets die Berechtigung für die Aktion s3:ObjectOwnerOverrideToBucketOwner. Diese Berechtigung ermöglicht dem Eigentümer des Ziel-Buckets, die Eigentümerschaft von Objektreplikaten anzunehmen. Die folgende Beispielanweisung einer Bucket-Richtlinie zeigt, wie dies funktioniert: Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die (Platzhalter für Benutzereingaben) durch Ihre Informationen.user input placeholders
... { "Sid":"1", "Effect":"Allow", "Principal":{"AWS":"source-bucket-account-id"}, "Action":["s3:ObjectOwnerOverrideToBucketOwner"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...
So ändern Sie den Replikateigentümer
Wenn sich die Quell- und Ziel-Buckets bei einer Replikationskonfiguration im Besitz verschiedener AWS-Konten befinden, können Sie Amazon S3 anweisen, die Replikat-Eigentümerschaft zu dem AWS-Konto zu ändern, das den Ziel-Bucket besitzt. Die folgenden Beispiele zeigen, wie Sie die Amazon-S3-Konsole, die AWS Command Line Interface (AWS CLI) und die AWS-SDKs verwenden, um die Eigentümerschaft von Replikaten zu ändern.
Schrittweise Anleitungen hierzu finden Sie unter Konfigurieren einer Replikation für Buckets im selben Konto. Dieses Thema enthält Anleitungen für eine Replikationskonfiguration, wenn sich die Quell- und Ziel-Buckets im Besitz desselben und unterschiedlicher AWS-Konten befinden.
Das folgenden Verfahren zeigt, wie Sie die Replikat-Eigentümerschaft mithilfe der AWS CLI ändern können. In diesem Verfahren gehen Sie wie folgt vor:
-
Erstellen Sie die Quell- und Ziel-Buckets.
-
Aktivieren Sie die Versionsverwaltung für die Buckets.
-
Erstellen Sie eine AWS Identity and Access Management(IAM)-Rolle, die Amazon S3 die Berechtigungen erteilt, Objekte zu replizieren.
-
Fügen Sie die Replikationskonfiguration zum Quell-Bucket hinzu.
-
In der Replikationskonfiguration weisen Sie Amazon S3 an, die Eigentümerschaft für das Replikat zu ändern.
-
Testen Sie Ihre Replikationskonfiguration.
Ändern Sie die Replikat-Eigentümerschaft wie folgt, wenn sich die Quell- und Ziel-Buckets im Besitz unterschiedlicher AWS-Konten (AWS CLI) befinden.
Die AWS CLI-Befehle in diesem Beispielverfahren können Sie verwenden, indem Sie die durch Ihre eigenen Informationen ersetzen. user input placeholders
-
In diesem Beispiel erstellen Sie die Quell- und Ziel-Buckets in zwei unterschiedlichen AWS-Konten. Um mit diesen beiden Konten zu arbeiten, konfigurieren Sie die AWS CLI mit zwei benannten Profilen. Bei diesem Beispiel werden die Profile
bzw.acctAverwendet. Informationen zum Einrichten der Anmeldeinformations-Profile und der Verwendung benannter Profile finden Sie unter Einstellungen der Konfigurations- und Anmeldeinformationsdatei im Benutzerhandbuch zur AWS Command Line Interface.acctBWichtig
Die Profile, die Sie für dieses Verfahren verwenden, müssen über die nötigen Berechtigungen verfügen. Beispielsweise legen Sie in der Replikations-Konfiguration die IAM-Rolle fest, die Amazon S3 annehmen kann. Dies gelingt Ihnen nur, wenn das verwendete Profil über die
iam:PassRole-Berechtigung verfügt. Wenn Sie zur Erstellung eines benannten Profils die Benutzer-Anmeldeinformationen eines Administrators verwenden, können Sie alle Aufgaben in diesem Verfahren durchführen. Weitere Informationen finden Sie unter Erteilen von Berechtigungen, mit denen ein Benutzer eine Rolle an einen AWS-Service übergeben kann im IAM-Benutzerhandbuch. -
Erstellen Sie den Quell-Bucket und aktivieren Sie das Versioning für ihn. In diesem Beispiel erstellen wir einen Quell-Bucket mit dem Namen
in der Region USA Ost (Nord-Virginia) (amzn-s3-demo-source-bucketus-east-1).aws s3api create-bucket \ --bucketamzn-s3-demo-source-bucket\ --regionus-east-1\ --profileacctAaws s3api put-bucket-versioning \ --bucketamzn-s3-demo-source-bucket\ --versioning-configuration Status=Enabled \ --profileacctA -
Erstellen Sie einen Ziel-Bucket und aktivieren Sie das Versioning für ihn. In diesem Beispiel erstellen wir einen Ziel-Bucket mit dem Namen
in der Region USA West (Oregon) (amzn-s3-demo-destination-bucketus-west-2). Verwenden Sie ein anderes AWS-Konto-Profil als das, das Sie für den Quell-Bucket verwendet haben.aws s3api create-bucket \ --bucketamzn-s3-demo-destination-bucket\ --regionus-west-2\ --create-bucket-configuration LocationConstraint=us-west-2\ --profileacctBaws s3api put-bucket-versioning \ --bucketamzn-s3-demo-destination-bucket\ --versioning-configuration Status=Enabled \ --profileacctB -
Sie müssen Ihrer Ziel-Bucket-Richtlinie Berechtigungen hinzufügen, um eine Änderung der Replikat-Eigentümerschaft zuzulassen.
-
Speichern Sie die folgende Richtlinie in eine Datei mit dem Namen
. Ersetzen Siedestination-bucket-policy.jsondurch Ihre eigenen Informationen.user input placeholders -
Fügen Sie die vorherige Richtlinie mithilfe des folgenden
put-bucket-policy-Befehls zum Ziel-Bucket hinzu:aws s3api put-bucket-policy --region${destination-region} --bucket${amzn-s3-demo-destination-bucket} --policy file://destination_bucket_policy.json
-
-
Erstellen Sie eine IAM-Rolle. Sie geben diese Rolle in der Replizierungskonfiguration an, die Sie später zum Quell-Bucket hinzufügen. Amazon S3 übernimmt diese Rolle, um Objekte in Ihrem Namen zu replizieren. Sie erstellen eine IAM-Rolle in zwei Schritten:
-
Erstellen Sie die Rolle.
-
Fügen Sie eine Berechtigungsrichtlinie zur Rolle hinzu.
-
Erstellen Sie die IAM-Rolle.
-
Kopieren Sie die folgende Vertrauensrichtlinie und speichern Sie sie in einer Datei mit dem Namen
im aktuellen Verzeichnis auf Ihrem lokalen Computer. Diese Richtlinie erteilt Amazon S3 Berechtigungen für die Übernahme der Rolle.s3-role-trust-policy.json -
Führen Sie den folgenden AWS CLI-
create-role-Befehl aus, um die IAM-Rolle zu erstellen:$aws iam create-role \ --role-namereplicationRole\ --assume-role-policy-document file://s3-role-trust-policy.json \ --profileacctANotieren Sie sich den Amazon-Ressourcennamen (ARN) der von Ihnen erstellten IAM-Rolle. Sie werden diesen ARN in einem späteren Schritt benötigen.
-
-
Fügen Sie eine Berechtigungsrichtlinie zur Rolle hinzu.
-
Kopieren Sie die folgende Berechtigungsrichtlinie und speichern Sie sie in einer Datei mit dem Namen
im aktuellen Verzeichnis auf Ihrem lokalen Computer. Diese Zugriffsrichtlinie erteilt Berechtigungen für verschiedene Amazon-S3-Bucket- und -Objektaktionen. In den folgenden Schritten fügen Sie diese Richtlinie der IAM-Rolle hinzu, die Sie zuvor erstellt haben.s3-role-perm-pol-changeowner.json -
Verwenden Sie den folgenden
put-role-policy-Befehl, um die vorherige Berechtigungsrichtlinie der Rolle hinzuzufügen.$aws iam put-role-policy \ --role-namereplicationRole\ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-namereplicationRolechangeownerPolicy\ --profileacctA
-
-
-
Fügen Sie Ihrem Quell-Bucket eine Replikations-Konfiguration hinzu.
-
Die AWS CLI erfordert, dass Sie die Replikations-Konfiguration als JSON festlegen. Speichern Sie den folgenden JSON-Code in einer Datei mit dem Namen
im aktuellen Verzeichnis auf Ihrem lokalen Computer. In der Konfiguration legtreplication.jsonAccessControlTranslationdie Änderung der Eigentümerschaft des Replikats vom Eigentümer des Quell-Buckets zum Eigentümer des Ziel-Buckets fest.{ "Role":"IAM-role-ARN", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket", "Account":"destination-bucket-owner-account-id", "AccessControlTranslation":{ "Owner":"Destination" } } } ] } -
Bearbeiten Sie die JSON-Datei, indem Sie Werte für den Namen des Ziel-Buckets, die Konto-ID des Eigentümers des Ziel-Buckets und den
angeben. Ersetzen SieIAM-role-ARNdurch den ARN des Buckets, den Sie zuvor erstellt haben. Speichern Sie die Änderungen.IAM-role-ARN -
Um die Replikationskonfiguration zum Quell-Bucket hinzuzufügen, führen Sie den folgenden Befehl aus:
$aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucketamzn-s3-demo-source-bucket\ --profileacctA
-
-
Testen Sie Ihre Replikationskonfiguration, indem Sie die Replikateigentümerschaft in der Amazon-S3-Konsole überprüfen.
Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Fügen Sie Objekte zum Quell-Bucket hinzu. Überprüfen Sie, ob der Ziel-Bucket die Objektreplikate enthält und ob die Eigentümerschaft der Replikate zu dem AWS-Konto geändert wurde, das den Ziel-Bucket besitzt.
Ein Code-Beispiel zum Hinzufügen einer Replikationskonfiguration finden Sie unter Verwenden der AWS SDKs. Sie müssen die Replikationskonfiguration entsprechend ändern. Weitere konzeptuelle Informationen finden Sie unter Ändern des Replikat-Eigentümers.