Wie stelle ich Daten aus einer Amazon-OpenSearch-Service-Domäne in einem anderen AWS-Konto wieder her?

Lesedauer: 7 Minute
0

Ich möchte Daten aus einer Amazon-OpenSearch-Service-Domäne in einem anderen AWS-Konto wiederherstellen? Wie kann ich vorgehen?

Kurzbeschreibung

Um Daten von einer OpenSearch-Service-Domäne in einem anderen AWS-Konto wiederherzustellen, müssen Sie einen kontoübergreifenden Zugriff einrichten. Ein kontoübergreifender Zugriff muss zwischen Ihrer OpenSearch-Service-Domäne und der Domäne hergestellt werden, von der Sie Daten wiederherstellen möchten. Sie müssen Ihrer Domäne außerdem erlauben, auf den Amazon Simple Storage Service (Amazon S3)-Bucket zuzugreifen, in dem Ihre Daten gespeichert sind.

Führen Sie die folgenden Schritte aus, um diesen kontoübergreifenden Zugriff zu erstellen:

1.    Richten Sie in Konto A Folgendes ein:
Quelle: OpenSearch-Service-Domäne mit feinkörniger Zugriffskontrolle
Quelle: Amazon S3 Bucket

2.    Richten Sie in Konto B Ihr Ziel (OpenSearch-Service-Domäne) mit feinkörniger Zugriffssteuerung ein.

Hinweis: Sie müssen keinen S3 Bucket im Ziel (Konto B) erstellen. Ein einziger S3 Bucket wird verwendet, um die Daten über die AWS-Konten hinweg wiederherzustellen. Dieses Setup funktioniert auch für die OpenSearch-Service-Domänen ohne feinkörnige Zugriffssteuerung.

Auflösung

Hinweis: Die Beispiele in diesem Artikel verwenden Python- und Postman-Code.

Richten Sie einen kontoübergreifenden Zugriff für Konto A ein

1.    Erstellen Sie einen S3 Bucket in Konto A in derselben Region wie die OpenSearch-Service-Domäne.

2.    Erstellen Sie eine AWS Identity Access Management (IAM)-Richtlinie, um S3-Bucket-Zugriffsberechtigungen bereitzustellen:

{
     "Version": "2012-10-17",
     "Statement": [{
          "Action": [
               "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot"
          ]
     },
     {
          "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject",
               "iam:PassRole"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot/*"
          ]
     }]
}

Hinweis: Ersetzen Sie „arn:aws:s3:::snapshot“ durch Ihren Bucket-ARN aus Schritt 1.

3.    Erstellen Sie eine IAM-Rolle und wählen Sie Amazon Elastic Compute Cloud (Amazon EC2) als Ihren Service aus.

4.    Fügen Sie die IAM-Richtlinie (erstellt in Schritt 2) zu Ihrer neu erstellten IAM-Rolle hinzu.

5.    Öffnen Sie Ihre IAM-Rolle und wählen Sie Vertrauensbeziehungen aus.

6.    Aktualisieren Sie die Vertrauensbeziehung der folgenden Richtlinie:

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

Hinweis: Ersetzen Sie „Service“: „ec2.amazonaws.com“ durch „Service“: „es.amazonaws.com“. Notieren Sie außerdem den Rollen-ARN, den Sie für spätere Schritte benötigen werden.

7.    Wählen Sie eine dieser Optionen:
Aktualisieren Sie die Richtlinie (aus Schritt 2), um die Berechtigungen „iam:PassRole“ aufzunehmen, und fügen Sie die Richtlinie an Ihre IAM-Rolle an. Diese Berechtigung ermöglicht dem OpenSearch-Service Schreibzugriff auf einen S3-Bucket.

-oder-

Erstellen Sie eine neue IAM-Richtlinie und fügen Sie die Richtlinie an Ihre IAM-Rolle an.

Hinweis: Sie können alle Ihre Berechtigungen unter einer IAM-Rolle festlegen lassen, indem Sie die Richtlinie aktualisieren. Oder wenn Sie eine neue IAM-Richtlinie erstellen und die Berechtigungen aufteilen möchten, können Sie die IAM-Richtlinie für einen anderen Anwendungsfall wiederverwenden.

Hier ist eine Beispielrichtlinie mit den erforderlichen IAM-Berechtigungen:

{
     "Version": "2012-10-17",
     "Statement": [{
          "Effect": "Allow",
          "Action": "iam:PassRole",
          "Resource": "arn:aws:iam::Account A:role/cross"
     },
     {
          "Effect": "Allow",
          "Action": "es:ESHttpPut",
          "Resource": "arn:aws:es:us-east-1:Account A:domain/srestore/*"
     }]
}

Diese Richtlinie muss an den IAM-Benutzer oder die Rolle angefügt werden, die zum Signieren der HTTP-Anforderung verwendet wird.

Hinweis: Ersetzen Sie „arn:aws:iam::Account A:role/cross“ durch die Rolle, die Sie in Schritt 3 erstellt haben. Aktualisieren Sie außerdem „arn:aws:es:us-east-1:Account A:domain/srestore/*“ mit der OpenSearch-Service-Domäne, die in Konto A als Quelle aufgeführt ist. Die Quelle in Konto A wird für Cluster-Snapshots verwendet.

8.    Erstellen Sie einen IAM-Benutzer und fügen Sie die Richtlinie an, die Sie in Schritt 2 erstellt haben (einschließlich der erforderlichen Berechtigungen für den Zugriff auf Amazon S3). Dieser IAM-Benutzer muss Administratorzugriff auf die OpenSearch-Service-Domäne in Konto A haben, um mithilfe von FGAC Zugriff auf die Lese-/Schreib-API zu ermöglichen. Weitere Informationen zur Verwendung einer feinkörnigen Zugriffssteuerung finden Sie unter Zuordnen der Snapshot-Rolle in OpenSearch Dashboards (bei Verwendung von feinkörniger Zugriffssteuerung).

9.    (Optional) Wenn Sie einen Python-Code verwenden, um den S3 Bucket bei OpenSearch Service zu registrieren, starten Sie einen Amazon-EC2-Computer in Konto A und fügen Sie dann die in Schritt 3 erstellte IAM-Rolle hinzu.

Hinweis: Stellen Sie sicher, dass Ihre Sicherheitsgruppe auf die OpenSearch-Service-Domäne zugreifen kann.

Registrieren Sie den S3 Bucket bei der Quelle in Konto A

Führen Sie die folgenden Schritte aus, um den S3 Bucket bei der Quelldomäne in Konto A zu registrieren:

1.    Aktualisieren Sie das PUT-Feld mit einer URL, die den OpenSearch-Service-Domänen-Endpunkt und den S3-Bucket-Namen enthält. Beispiel:

https://endpointofdomain.amazonaws.com/_snapshot/snapshot

2.    Wählen Sie die Registerkarte Autorisierung aus.

3.    Aktualisieren Sie den AccessKey und SecretKey des IAM-Benutzers.

4.    Aktualisieren Sie die AWS-Region und den Servicenamen.

5.    Wählen Sie Speichern aus.

6.    Wählen Sie die Registerkarte Überschriften.

7.    Wählen Sie Content-Type für Ihren Schlüsseltyp aus.

8.    Wählen Sie Anwendung/JSON für Ihren Schlüssel-Wert aus.

9.    Wählen Sie Speichern aus.

10.    Wählen Sie die Registerkarte Body aus.

11.    Verwenden Sie den folgenden Code:

{
     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account A:role/cross"
     }
}

12.    Wählen Sie Senden, um die Abfrage über die OpenSearch-Service-Konsole abzusenden. Nach Abschluss der Registrierung erhalten Sie eine Meldung Statuscode: 200 OK.

13.    Loggen Sie sich in Konto A bei OpenSearch Dashboards ein. Überprüfen Sie dann die verfügbaren Daten im S3-Bucket.

14.    Verwenden Sie den folgenden Befehl, um einen neuen Snapshot zu erstellen:

PUT /_snapshot/<registered_snapshot_repository>/<snapshot_name>

Hier ist eine Beispielausgabe:

GET _cat/snapshots/casnapshot
today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

Diese Ausgabe bestätigt den Abschluss der S3 Bucket-Registrierung für die OpenSearch-Service-Domäne in Konto A.

Richten Sie einen kontoübergreifenden Zugriff für Konto B ein

1.    Erstellen Sie eine Richtlinie und eine IAM-Rolle in Konto B und geben Sie dabei denselben S3 Bucket-ARN wie Konto A an:

{
     "Version": "2012-10-17",
     "Statement": [{
          "Action": [
               "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot" --> S3 bucket ARN from Account A
          ]
     },
     {
          "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject",
               "iam:PassRole"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot/*"
          ]
     },
     {
          "Effect": "Allow",
          "Action": "iam:PassRole",
          "Resource": "arn:aws:iam::Account B:role/cross" --> Role created in Account B 
     },
     {
          "Effect": "Allow",
          "Action": "es:*",
          "Resource": "arn:aws:es:us-east-1:Account B:domain/restore/*" --> Destination ES domain in Account B
     }]
}

Hier ist ein Beispiel für eine Vertrauensrichtlinie für Ihre Rolle:

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

2.    Fügen Sie die zuvor erstellte IAM-Rolle an den IAM-Benutzer in Konto B. an. Derselbe IAM-Benutzer muss über Administratorzugriff auf das Ziel (Domäne mit FGAC) in Konto B verfügen. Weitere Informationen zum Aktualisieren des IAM-Benutzerzugriffs finden Sie unter Registrierung eines manuellen Snapshot-Repositorys.

3.     Aktualisieren Sie die S3-Bucket-Richtlinie für Ihren Bucket in Konto A und gewähren Sie Konto B Zugriff auf Ihren Bucket:

{
     "Version": "2012-10-17",
     "Id": "Policy1568001010746",
     "Statement": [{
          "Sid": "Stmt1568000712531",
          "Effect": "Allow",
          "Principal": {
               "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B 
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::snapshot"
     },
     {
          "Sid": "Stmt1568001007239",
          "Effect": "Allow",
          "Principal": {
               "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B 
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::snapshot/*"
     }]
}

4.    Registrieren Sie den S3 Bucket bei Ihrer Domäne (in Konto B).

Hinweis: Sie müssen die Authentifizierungsdaten des IAM-Benutzers in Konto B verwenden. Stellen Sie sicher, dass Sie OpenSearch Service als Ziel wählen.

{
     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B.
     }
}

5.    Loggen Sie sich bei OpenSearch Dashboards in Konto B ein.

6.    Prüfen Sie die Snapshots von Konto A, die im S3 Bucket verfügbar sind:

GET _cat/snapshots/casnapshot

Hier ist eine Beispielausgabe:

today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

Diese Ausgabe bestätigt, dass der kontoübergreifende Zugriff in Konto B erfolgreich eingerichtet ist.


Zugehörige Informationen

Wie kann ich Daten von einer Amazon-OpenSearch-Service-Domäne zu einer anderen migrieren?

Fügen Sie eine Bucket-Richtlinie an, um Konto B kontoübergreifende Berechtigungen zu erteilen.

Migration von Amazon-OpenSearch-Service-Indizes mithilfe der Remote-Neuindizierung

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren