Wie kann ich mit Object Lock eine kontoübergreifende Replikation für meine Amazon S3-Buckets einrichten?

Lesedauer: 5 Minute
0

Ich möchte die kontoübergreifende Replikation in einem Amazon Simple Storage Service (Amazon S3) -Bucket einrichten, in dem Object Lock aktiviert ist.

Auflösung

Um die kontoübergreifende Replikation in einem Amazon S3-Bucket mit Object Lock einzurichten, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Vergewissern Sie sich, dass im Ziel-Bucket die Objektsperre aktiviert ist. Wenn Object Lock für den Ziel-Bucket nicht aktiviert ist, wenden Sie sich mit Ihrer Anfrage an den AWS-Support.
  • Stellen Sie sicher, dass Sie auf die AWS-Befehlszeilenschnittstelle (AWS CLI) oder AWS CloudShell zugreifen können.
  • Stellen Sie sicher, dass Sie über das Object Lock-Token verfügen, bevor Sie mit der Replikation beginnen.

Schritt 1: Erstellen Sie eine IAM-Rolle für die Replikation mit den erforderlichen Berechtigungen

1.Erstellen Sie in der AWS Identity and Access Management (IAM) -Konsole eine Replikationsrolle für das Quellkonto mit einer Vertrauensbeziehung für Amazon S3.

Das Vertrauensverhältnis sieht wie folgt aus:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2.Stellen Sie sicher, dass Sie der IAM-Rolle die folgenden Berechtigungen zuweisen:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    }
  ]
}

3.Wenn Sie die Schlüssel des AWS Key Management Service (AWS KMS) verwenden, stellen Sie sicher, dass Sie auch die folgenden Berechtigungen anhängen:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    },
    {
      "Sid": "SourceBucketKMSKey",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "SourceBucketKMSKeyARN"
    },
    {
      "Sid": "DestinationBucketKMSKey",
      "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "DestinationBucketKMSKeyARN"
    }
  ]
}

Schritt 2: Aktualisieren Sie die AWS KMS-Schlüsselberechtigungen

Stellen Sie sicher, dass der AWS KMS-Schlüssel für das Zielkonto den Zugriff auf die Replikations-IAM-Rolle im Quellkonto ermöglicht.

Beispiel:

{
  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Encrypt"
  ],
  "Resource": "*"
}

Hinweis: Sie können den verwalteten AWS KMS-Schlüssel AWS/s3 nicht für die kontoübergreifende Replikation verwenden. Sie können jedoch die SSE-S3-Verschlüsselung verwenden.

Hinweis: Wenn Sie in der Schlüsselrichtlinie ein Sternchen (*) für Ressource verwenden, erteilt die Richtlinie nur der Replikationsrolle die Berechtigung für den Schlüssel. Die Richtlinie erlaubt es der Replikationsrolle nicht, ihre Berechtigungen zu erweitern.

Schritt 3: Fügen Sie dem Zielkonto die folgende Bucket-Richtlinie hinzu

Stellen Sie sicher, dass Sie im Abschnitt Principal den ARN der Replikations-IAM-Rolle hinzufügen, die Sie in Schritt 1 erstellt haben.

{
  "Version": "2012-10-17",
  "Id": "PolicyForDestinationBucket",
  "Statement": [
    {
      "Sid": "ReplicationPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
      },
      "Action": [
        "s3:ReplicateDelete",
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetBucketVersioning",
        "s3:PutBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*",
        "arn:aws:s3:::DestBucketName"
      ]
    }
  ]
}

Schritt 4: Erstellen Sie eine replication.json-Datei

Erstellen Sie eine Datei namens replication.json, die im Quellkonto wie folgt aussieht:

{
  "Role": "arn:aws:iam::123456789012:role/s3-replication-role",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 10,
      "DeleteMarkerReplication": {
        "Status": "Disabled"
      },
      "Filter": {
        "Prefix": ""
      },
      "Destination": {
        "Bucket": "arn:aws:s3:::destination_bucket"
      }
    }
  ]
}

Diese Datei enthält die Parameter in der JSON-Formation, die Replikation einrichten. Dies sind dieselben Parameter, die Sie möglicherweise verwenden, wenn Sie die Replikation mithilfe der Amazon S3-Konsole einrichten. Sie müssen die AWS-CLI verwenden, um die Replikation einzurichten, da Sie die Amazon S3-Konsole dafür noch nicht verwenden können.

Achten Sie darauf, s3-replication-role durch die IAM-Rolle aus Schritt 1 zu ersetzen. Fügen Sie bei Bedarf auch den ARN für den Ziel-Bucket, die Präfixspezifikation und die Einstellungen zum Löschen von Markierungen hinzu.

Schritt 5: Einrichten Replikation

Nachdem Sie die vorherige Konfiguration gespeichert haben, übergeben Sie die Datei mit dem folgenden AWS-CLI-Befehl:

aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>

Um den Wert des Object Lock-Tokens zu erhalten, der in diesem Befehl verwendet werden soll, wenden Sie sich an den AWS-Support. Der **<TOKEN>**Wert ist das Object Lock-Token für den Quell-Bucket.

Schritt 6: Nachprüfung

Wenn Sie den vorherigen Befehl ausführen, wird die Replikationsregel zum Quell-Bucket hinzugefügt. Mit dieser Regel können die neu hinzugefügten Objekte in den Ziel-Bucket repliziert werden. Sie können die Regel testen, indem Sie der Quelle neue Objekte hinzufügen und das Ziel überprüfen.

Hinweis: Sie können die Replikationskonfiguration mithilfe der Amazon S3-Konsole aktualisieren, nachdem Sie die Replikation eingerichtet haben. Um Objekte zu replizieren, die mit AWS KMS verschlüsselt sind, ändern Sie die Replikationskonfiguration, indem Sie mit AWS KMS verschlüsselte Objekte replizieren unter Verschlüsselung auswählen.

Verwandte Informationen

Konfiguration von S3 Object Lock mithilfe der Konsole

Schalten Sie S3 Object Lock ein

Replizieren von Objekten, die mit serverseitiger Verschlüsselung erstellt wurden (SSE-C, SSE-S3, SSE-KMS)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr