Wie stelle ich Daten aus einer Amazon-OpenSearch-Service-Domäne in einem anderen AWS-Konto wieder her?
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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 6 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren