Wie kann ich S3-Objekte von einem anderen AWS-Konto kopieren?

Lesedauer: 4 Minute
0

Ich möchte Amazon Simple Storage Service (Amazon S3) Objekte zwischen AWS-Konten kopieren. Dann möchte ich sicherstellen, dass das Zielkonto die kopierten Objekte besitzt.

Behebung

Wichtig: Objekte in S3 gehören nicht immer automatisch dem AWS-Konto, das sie hochladet. Wenn Sie die Objekteigentümerschaft ändern, empfiehlt es sich, die Einstellung „Bucket-Besitzer erzwungen“ zu verwenden. Diese Option deaktiviert jedoch alle Bucket-ACLs und ACLs für alle Objekte in Ihrem Bucket.

Mit der erzwungenen Einstellung „Bucket-Besitzer“ in S3 Object Ownership besitzt derselbe Bucket-Besitzer automatisch alle Objekte in einem Amazon S3-Bucket. Die Funktion „Bucket Owner Enforced“ deaktiviert auch alle Zugriffskontrolllisten (ACLs). Dies vereinfacht die Zugriffsverwaltung für in Amazon S3 gespeicherte Daten. Bei vorhandenen Buckets gehört ein S3-Objekt jedoch immer noch dem AWS-Konto, das es hochgeladen hat, sofern Sie die ACLs nicht ausdrücklich deaktivieren.

Wenn Ihre bestehende Methode der gemeinsamen Nutzung von Objekten auf der Verwendung von ACLs beruht, identifizieren Sie die Prinzipale, die ACLs für den Zugriff auf Objekte verwenden. Weitere Informationen zum Überprüfen von Berechtigungen vor dem Deaktivieren von ACLs finden Sie unter Voraussetzungen für das Deaktivieren von ACLs.

Wenn Sie Ihre ACLs nicht deaktivieren können, gehen Sie wie folgt vor, um das Eigentum an Objekten zu übernehmen, bis Sie Ihre Bucket-Richtlinie anpassen können:

1.Erstellen Sie im Quellkonto eine vom Kunden verwaltete AWS Identity and Access Management (IAM) -Richtlinie, die einer IAM-Identität (Benutzer oder Rolle) die entsprechenden Berechtigungen gewährt. Der IAM-Benutzer muss Zugriff haben, um Objekte aus dem Quell-Bucket abzurufen und Objekte wieder in den Ziel-Bucket zu legen. Sie können eine IAM-Richtlinie verwenden, die dem folgenden Beispiel ähnelt:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Effect": "Allow",
      "Action": \[
        "s3:ListBucket",
        "s3:GetObject"
      \],
      "Resource": \[
        "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET/\*"
      \]
    },
    {
      "Effect": "Allow",
      "Action": \[
        "s3:ListBucket",
        "s3:PutObject",
        "s3:PutObjectAcl"
      \],
      "Resource": \[
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/\*"
      \]
    }
  \]
}

**Hinweis:**Diese IAM-Beispielrichtlinie umfasst nur die erforderlichen Mindestberechtigungen für das Auflisten von Objekten und das Kopieren von Objekten zwischen Buckets in verschiedenen Konten. Sie müssen die zulässigen S3-Aktionen an Ihren Anwendungsfall anpassen. Wenn der Benutzer beispielsweise Objekte kopieren muss, die Objekt-Tags haben, müssen Sie auch Berechtigungen für s3:GetObjectTagging gewähren. Wenn ein Fehler auftritt, versuchen Sie, diese Schritte als Admin Benutzer durchzuführen.

2.Hängen Sie im Quellkonto die vom Kunden verwaltete Richtlinie an die IAM-Identität an, die Sie zum Kopieren von Objekten in den Ziel-Bucket verwenden möchten.

3.Legen Sie im Zielkonto für S3 Object Ownership für den Ziel-Bucket die Option Bucket Owner Preferred fest. Nachdem Sie den S3-Objekteigentum festgelegt haben, gehören neue Objekte, die mit der Zugriffskontrollliste (ACL) auf bucket-owner-full-control hochgeladen wurden, automatisch dem Konto des Buckets.

4.Ändern Sie im Zielkonto die Bucket-Richtlinie des Ziel-Buckets, um dem Quellkonto Berechtigungen für das Hochladen von Objekten zu gewähren. Fügen Sie der Bucket-Richtlinie außerdem eine Bedingung hinzu, nach der Objekt-Uploads die ACL auf bucket-owner-full-control setzen müssen. Sie können eine Anweisung verwenden, die dem folgenden Beispiel ähnelt:

**Hinweis:**Ersetzen Sie destination-doc-example-bucket durch den Namen des Ziel-Buckets. Ersetzen Sie dann arn:aws:iam::222222222222:user/Jane durch den Amazon Resource Name (ARN) der IAM-Identität aus dem Quellkonto.

{
  "Version": "2012-10-17",
  "Id": "Policy1611277539797",
  "Statement": \[
    {
      "Sid": "Stmt1611277535086",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:user/Jane"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/\*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      }
    },
    {
      "Sid": "Stmt1611277877767",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:user/Jane"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET"
    }
  \]
}

Diese Beispiel-Bucket-Richtlinie beinhaltet nur die mindestens erforderlichen Berechtigungen für das Hochladen eines Objekts mit der erforderlichen ACL. Sie müssen die zulässigen S3-Aktionen an Ihren Anwendungsfall anpassen. Wenn der Benutzer beispielsweise Objekte kopieren muss, die Objekt-Tags haben, müssen Sie auch Berechtigungen für s3:GetObjectTagging gewähren

5.Nachdem Sie die IAM-Richtlinie und die Bucket-Richtlinie konfiguriert haben, muss die IAM-Identität aus dem Quellkonto Objekte in den Ziel-Bucket hochladen. Vergewissern Sie sich, dass die ACL auf bucket-owner-full-control gesetzt ist. Beispielsweise muss die Quell-IAM-Identität den Befehl cp AWS CLI mit der Option --acl ausführen:

aws s3 cp s3://source-DOC-EXAMPLE-BUCKET/object.txt s3://destination-DOC-EXAMPLE-BUCKET/object.txt --acl bucket-owner-full-control

**Hinweis:**Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Wenn Sie S3 Object Ownerrship auf Bucket Owner Preferred setzen, gehören Objekte, die Sie mit bucket-owner-full-control hochladen, dem Konto des Ziel-Buckets.

**Wichtig:**Wenn für Ihren S3-Bucket die Standardverschlüsselung mit aktiviertem AWS Key Management Service (AWS KMS) aktiviert ist, müssen Sie auch die AWS KMS-Schlüsselberechtigungen ändern. Anweisungen finden Sie unter Mein Amazon S3-Bucket verfügt über eine Standardverschlüsselung mit einem benutzerdefinierten AWS KMS-Schlüssel. Wie kann ich Benutzern erlauben, aus dem Bucket herunterzuladen und in den Bucket hochzuladen?

Verwandte Informationen

Bucket-Besitzer gewährt kontoübergreifende Bucket-Berechtigungen

Wie ändere ich die Objekteigentümerschaft für einen Amazon S3-Bucket, wenn die Objekte von anderen AWS-Konten hochgeladen werden?

Verwendung einer ressourcenbasierten Richtlinie, um den Zugriff auf einen Amazon S3-Bucket in einem anderen Konto zu delegieren

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr