Wie stelle ich Daten aus einer OpenSearch Service-Domain in einem anderen AWS-Konto wieder her?

Lesedauer: 6 Minute
0

Ich möchte Daten aus einer Amazon OpenSearch Service-Domain in einem anderen Konto wiederherstellen.

Kurzbeschreibung

Um Daten aus einer OpenSearch Service-Domain in einem anderen Konto wiederherzustellen, musst du den kontoübergreifenden Zugriff für die folgenden Domains einrichten:

  • Die Quell-Domain, von der du Daten wiederherstellen möchtest (Konto A)
  • Deine OpenSearch Service-Ziel-Domain (Konto B)

Du musst außerdem Berechtigungen für deine Domain einrichten, um auf den Amazon Simple Storage Service (Amazon S3)-Bucket zuzugreifen, in dem deine Daten gespeichert sind.

Hinweis: Du musst im Ziel (Konto B) keinen Amazon S3-Bucket erstellen. OpenSearch Service verwendet einen einzigen Amazon S3-Bucket, um die Daten in deinen Konten wiederherzustellen.

Lösung

Hinweis: OpenSearch Service verwendet die Quell-Domain in Konto A für Cluster-Snapshots.

Erstelle zunächst einen Amazon S3-Bucket in Konto A in derselben AWS-Region wie die OpenSearch Service-Ziel-Domain. Führe dann die folgenden Schritte aus, um den kontoübergreifenden Zugriff einzurichten. Du musst die Schritte sowohl für Konto A als auch für Konto B ausführen.

Richte den Zugriff auf den S3-Bucket in beiden Konten ein

Führe die folgenden Schritte aus:

  1. Erstelle eine AWS Identity and Access Management (IAM)-Rolle, die OpenSearch Service die Erlaubnis erteilt, auf den S3-Bucket zuzugreifen. Wähle dann Amazon Elastic Compute Cloud (Amazon EC2) als deinen Service aus.

  2. Erstelle die folgende IAM-Richtlinie, die eine S3-Bucket-Zugriffsberechtigung gewährt, und hänge die Richtlinie dann der IAM-Rolle an:

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

    Hinweis: Ersetze arn:aws:s3:::AccountA_S3_Bucket_Name durch den ARN deines Buckets.

  3. Aktualisiere die Bucket-Richtlinie von Konto A mit der folgenden Anweisung, um kontoübergreifenden Bucket-Zugriff auf die IAM-Rolle in Konto B zu gewähren:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Permission for AccountB role",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::account-B-id:role/AccountB-role"
                },
                "Action": [
                    "s3:GetLifecycleConfiguration",
                    "s3:ListBucket",
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::AccountA-bucket",
                    "arn:aws:s3:::AccountA-bucket/*"
                ]
            }
        ]
    }
  4. Aktualisiere die Vertrauensrichtlinie der Rolle, sodass sie das folgende Vertrauensverhältnis enthält:

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

    Hinweis: Notiere dir den ARN der Rolle, der in späteren Schritten verwendet werden soll.

  5. Um OpenSearch Service Schreibzugriff auf deinen S3-Bucket zu gewähren, führe eine der folgenden Aktionen aus:
    Um alle deine Berechtigungen unter einer IAM-Rolle zu gruppieren, nimm die Berechtigung iam:PassRole in deine bestehende IAM-Richtlinie auf.
    -oder-
    Um Berechtigungen aufzuteilen, erstelle eine neue IAM-Richtlinie mit der Berechtigung iam:PassRole.
    Hinweis: Du musst die IAM-Richtlinie an die IAM-Rolle anhängen, die du zum Signieren der HTTP-Anfrage verwendest.
    Die folgende Beispielrichtlinie enthält die erforderlichen IAM-Berechtigungen:

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

    Hinweis: Ersetze arn:aws:iam::Account:snapshot-role durch deine IAM-Rolle. Ersetze außerdem arn:aws:es:us-east-1:Account:domain/restore/* durch die OpenSearch Service-Domain in Konto A oder Konto B.

  6. Wenn du die detaillierte Zugriffskontrolle für deine Domain aktiviert hast, musst du die IAM-Rolle OpenSearch Dashboards zuordnen. Die IAM-Rolle verwendet eine detaillierte Zugriffskontrolle, um den Zugriff auf die Lese- oder Schreib-API zu ermöglichen.

  7. (Optional) Wenn du den Python-Client in Konto A verwendet hast, um den Bucket bei OpenSearch Service zu registrieren, starte eine EC2-Instance in Konto A. Füge dann deine IAM-Rolle hinzu.

Hinweis: Stelle sicher, dass deine Sicherheitsgruppe auf die OpenSearch Service-Domain zugreifen kann.

Registriere den S3-Bucket als Snapshot-Repository in beiden Konten

Wichtig: Für Konto B musst du die IAM-Benutzerauthentifizierungsdaten von Konto B verwenden und OpenSearch Service als Ziel auswählen.

Um den Bucket zu registrieren, verwende die Postman-Anwendung, um eine HTTP-PUT-Anfrage zu stellen. Informationen zur Installation der Anwendung findest du unter Postman herunterladen auf der Postman-Website.

Führe die folgenden Schritte aus:

  1. Gib bei PUT eine URL ein, die den OpenSearch Service-Domain-Endpunkt und den S3-Bucket-Namen enthält, zum Beispiel your-domain-endpoint.amazonaws.com/_snapshot/your-snapshot-repository-name.
  2. Wähle die Registerkarte Autorisierung aus.
  3. Wähle unter Postman für Typ die Option AWS Signature aus. Gib bei AccessKey und SecretKey die Zugriffsschlüssel des IAM-Benutzers ein.
  4. Gib bei AWS-Region deine Region ein.
  5. Gib beim Servicenamen es ein.
  6. Wähle Speichern aus.
  7. Wähle die Registerkarte Header aus.
  8. Wähle für Schlüsseltyp die Option Inhaltstyp aus.
  9. Wähle für Schlüsselwert die Option Anwendung/JSON aus.
  10. Wähle Speichern aus.
  11. Wähle die Registerkarte Text aus.
  12. Registriere den S3-Bucket als Snapshot-Repository:
{     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account:role/cross"
     }
}

Hinweis: Ersetze snapshot durch deinen S3-Bucket-Namen, us-east-1 durch deine Region und arn:aws:iam::Account:role/cross durch die IAM-Rolle von Konto A oder Konto B. Um die Anfrage zu senden, wähle Senden aus.

Nachdem die Registrierung abgeschlossen ist, erhältst du die Meldung Status Code: 200 OK.

Stelle sicher, dass dein Snapshot-Repository richtig konfiguriert ist

Führe in Konto A die folgenden Schritte aus:

  1. Öffne OpenSearch Dashboards und überprüfe dann die verfügbaren Daten im Bucket.
  2. Führe den folgenden Befehl aus, um einen neuen Snapshot zu erstellen:
    PUT /_snapshot/my-snapshot-repo-name/snapshot_name
    Hinweis: Ersetze my-snapshot-repo-name durch deinen S3-Bucket-Namen und den snapshot name durch deinen Snapshot-Namen.
    Die folgende Beispielausgabe bestätigt eine vollständige S3-Bucket-Registrierung für die OpenSearch Service-Domain in Konto A:
    GET _cat/snapshots/my-snapshot-repo-name
    
    SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

Führe in Konto B die folgenden Schritte aus:

  1. Öffne OpenSearch Dashboards.

  2. Führe den folgenden Befehl aus, um die Snapshots von Konto A anzuzeigen, die im S3-Bucket verfügbar sind:

    GET _cat/snapshots/my-snapshot-repo-name

    **Hinweis:**Ersetze my-snapshot-repo-name durch dein Snapshot-Repository.
    Die folgende Beispielausgabe bestätigt, dass du den kontoübergreifenden Zugriff in Konto B eingerichtet hast:

    today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
  3. Führe den folgenden Befehl aus, um die Daten wiederherzustellen:

    POST /_snapshot/my-snapshot-repo-name/snapshotID/_restore

    **Hinweis:**Ersetze my-snapshot-repo-name durch dein Snapshot-Repository und snapshotID durch deinen Snapshot-Namen.

  4. Führe den folgenden Befehl aus, um bestimmte Indizes wiederherzustellen:

    POST /_snapshot/my-snapshot-repo-name/snapshot ID/_restore
    {
       "indices": "index name1,index name2"
    }

    **Hinweis:**Ersetze my-snapshot-repo-name durch dein Snapshot-Repository und snapshotID durch deinen Snapshot-Namen. Ersetze außerdem index name1 und indexname2 durch deine Indizes.

  5. Führe den folgenden Befehl aus, um die wiederhergestellten Indizes zu überprüfen:

    GET _cat/indices?v

Ähnliche Informationen

Wie migriere ich Daten von einer OpenSearch-Service-Domain zu einer anderen?

Schritt 1.3: Hänge eine Bucket-Richtlinie an, um Konto B kontoübergreifende Berechtigungen zu gewähren

Amazon OpenSearch Service-Indizes mithilfe von Remote-Neuindizierung migrieren

IAM-Rollenmanagement

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten