Wie kann ich manuelle Snapshot-Fehler in meinem Amazon OpenSearch Service-Cluster beheben?

Letzte Aktualisierung: 2022-05-12

Ich möchte einen manuellen Snapshot meines Amazon-OpenSearch Service-Clusters wiederherstellen. Ich erhalte jedoch eine Fehlermeldung, wenn ich versuche, ein Repository zu registrieren oder auf ein registriertes Repository zuzugreifen. Was ist der Grund dafür und wie löse ich das Problem?

Kurzbeschreibung

Führen Sie die folgenden Schritte aus, um Daten aus einem manuellen Snapshot in OpenSearch Service erfolgreich zu migrieren:

1.    Wählen Sie einen Amazon Simple Storage Service (Amazon S3)-Bucket, in dem Sie Ihren Snapshot speichern möchten.

2.    Registrieren Sie den Amazon S3 Bucket bei Ihrem OpenSearch Service-Quellcluster.

3.    Machen Sie einen Snapshot des OpenSearch Service-Quellclusters und speichern Sie ihn dann in Ihrem Amazon S3 Bucket.

4.    Registrieren Sie Ihren Zielcluster bei demselben Amazon S3 Bucket, um sicherzustellen, dass Sie den manuellen Snapshot anzeigen können.

5.    Stellen Sie den manuellen Snapshot auf dem Zielcluster in OpenSearch Service wieder her.

Andernfalls könnte eines der folgenden Probleme auftreten:

  • 403 Unauthorized-Fehler
  • repository_missing_exception
  • concurrent_snapshot_execution_exception
  • snapshot_restore_exception
  • a_w_s_security_token_service_exception
  • Snapshot-Status „PARTIAL“
  • Problem mit Amazon S3 Glacier-Speicherklasse

Lösung

403 Unauthorized-Fehler

Wenn Sie die detaillierte Zugriffssteuerung (FGAC) auf Ihrer OpenSearch Service-Domain aktiviert haben, erhalten Sie möglicherweise die folgende Fehlermeldung angezeigt, wenn Sie einen Snapshot erstellen:

{"error":{"root_cause":[{"type":"security_exception","reason":"no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::012345678912:user/username, backend_roles=[], requestedTenant=null]"}],"type":"security_exception","reason":"no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::012345678912:user/username, backend_roles=[], requestedTenant=null]"},"status":403}

Um den 403 UnauthorizedFehler zu beheben, geben Sie bei jedem manuellen Snapshot einen Benutzername:Passwort-Parameter an:

curl -XPUT -u 'opensearch-domain-endpoint/_snapshot/snapshot-repository-name/snapshot-name'

Hinweis: Sie müssen ein Superuser sein, um eine detaillierte Zugriffskontrolle für Ihre OpenSearch Service-Domain zu aktivieren. Sie können entweder Ihren Superuser-Namen und Ihr Passwort verwenden oder eine AWS Identity-Access-Management-Rolle (IAM) als Superuser festlegen. Wenn Sie auf Ihren Cluster-Snapshot zugreifen, geben Sie Ihre Superuser-Anmeldeinformationen oder IAM-Rolle an. Wenn Sie eine IAM-Rolle angeben, muss die IAM-Rolle die HTTP-Anforderungen mit sigv4 signieren. Weitere Informationen zur Verwendung von detaillierten Zugriffssteuerungen und IAM-Rollen finden Sie unter Erstellen und Verwalten von Amazon OpenSearch Service-Domains.

Außerdem müssen Sie ein Snapshot-Repository mit Ihrem Snapshot registrieren und die Rolle manage_snapshots einer IAM-Rolle zuordnen. Die Rolle manage_snapshots muss über die entsprechenden Berechtigungen verfügen (IAM:PassRole), um die IAM-Rolle (DieSnapshotRolle) zu übernehmen. Weitere Informationen finden Sie unter Voraussetzungen für manuelle Snapshots.

Führen Sie die folgenden Schritte aus, um die Rolle manage_snapshots einer IAM-Rolle zuzuordnen:

1.    Öffnen Sie die OpenSearch-Dashboard-Konsole.

2.    Loggen Sie sich als Hauptbenutzer ein.

3.    Wählen Sie Sicherheit.

4.    Wählen Sie Rollen.

5.    Wählen Sie manage_snapshots als Ihre Rolle.

6.    Wählen Sie Zugeordnete Benutzer.

7.    Wählen Sie Mapping verwalten.

8.    Fügen Sie unter Benutzer den ARN Ihres Benutzers hinzu (zum Beispiel: „arn:aws:iam::012345678912:Benutzer/Benutzername“).

9.    Registrieren Sie Ihr manuelles Snapshot-Repository.

Repository_missing_exception

Bevor Sie einen manuellen Index-Snapshot erstellen, müssen Sie ein manuelles Snapshot-Repository bei OpenSearch Service registrieren. Ihre IAM-Rolle (DieSnapshotRolle) muss auch für die Arbeit mit Amazon S3 eingerichtet sein.

Wenn Sie Ihr Snapshot-Repository vor dem Erstellen eines manuellen Snapshots nicht registriert haben oder einen falschen Repository-Namen verwenden, wird die folgende Fehlermeldung angezeigt:

{"error":{"root_cause":[{"type":"repository_missing_exception","reason":"[snapshot-repository-name] missing"}],"type":"repository_missing_exception","reason":"[snapshot-repository-name] missing"},"status":404}

Stellen Sie sicher, dass Sie die Voraussetzungen für den manuellen Snapshot erfüllen, um diesen Fehler zu beheben. Sie sollten den Repository-Namen außerdem auf Tippfehler überprüfen.

Concurrent_snapshot_execution_exception

Wenn gerade ein Snapshot ausgeführt wird, wird beim Versuch, einen weiteren Snapshot zu erstellen, die folgende Fehlermeldung angezeigt:

The below error “concurrent_snapshot_execution_exception” means that a snapshot is already in progress
{"error":{"root_cause":[{"type":"concurrent_snapshot_execution_exception","reason":"[snapshot-repository-name:snapshot-name] a snapshot is already running"}],"type":"concurrent_snapshot_execution_exception","reason":"[snapshot-repository-name:snapshot-name] a snapshot is already running"}

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob ein weiterer Snapshot läuft:

curl -XGET 'opensearch-domain-endpoint/_snapshot/_status'

Wenn ein Snapshot bereits läuft, warten Sie, bis der aktuelle Snapshot abgeschlossen ist. Wenn Sie dagegen den Verdacht haben, dass Ihr Snapshot keine Fortschritte macht, überprüfen Sie Ihren Verlauf der stündlichen Snapshots. Weitere Informationen finden Sie unter Warum kann ich einen Index nicht löschen oder ein Upgrade für meinen Amazon OpenSearch Service-Cluster durchführen?

Snapshot_restore_exception

Wenn Sie versuchen, Daten von einem On-Premises-Cluster zu einer OpenSearch Service-Domäne zu migrieren, kann die folgende Ausnahme auftreten:

{
  "error": {
    "root_cause": [
      {
        "type": "snapshot_restore_exception",
        "reason": "[manual-snapshot-repo:my-manual-snapshot1/HPOcIJryTj6a6GJvyP79bw] the snapshot was created with Elasticsearch version [6.8.0] which is higher than the version of this node [6.7.0]"
      }
    ],
    "type": "snapshot_restore_exception",
    "reason": "[manual-snapshot-repo:my-manual-snapshot1/HPOcIJryTj6a6GJvyP79bw] the snapshot was created with Elasticsearch version [6.8.0] which is higher than the version of this node [6.7.0]"
  },
  "status": 500
}

Diese Fehlermeldung tritt auf, wenn ein Snapshot, der auf einem vorhandenen Cluster aufgenommen wurde, auf einer anderen Version von Elasticsearch als OpenSearch Service ausgeführt wird. Wenn Ihr Cluster auf einer früheren Version von Elasticsearch als OpenSearch Service ausgeführt wird, sollten Sie ein Upgrade Ihrer Elasticsearch-Version in Betracht ziehen. Sie können außerdem die Remote-Reindex-API verwenden, um Ihre Indizes zu migrieren.

a_w_s_security_token_service_exception

Wenn für die IAM-Rolle, die mit Ihrem manuellen Snapshot verknüpft ist, keine Vertrauensstellung für „es.amazonaws.com“ hergestellt wurde, erhalten Sie die folgende Ausnahme:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "repository_exception",
        "reason" : "[es_01082021_repo] Could not determine repository generation from root blobs"
      }
    ],
    "type" : "repository_exception",
    "reason" : "[es_01082021_repo] Could not determine repository generation from root blobs",
    "caused_by" : {
      "type" : "i_o_exception",
      "reason" : "Exception when listing blobs by prefix [index-]",
      "caused_by" : {
        "type" : "a_w_s_security_token_service_exception",
        "reason" : "a_w_s_security_token_service_exception: User: arn:aws:sts::332315457451:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-679203657591 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::679203657591:role/ES_Backup_Role (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 36d09b93-d94f-457e-8fa5-b0a50ba436c3)"
      }
    }
  },
  "status" : 500
}

Mit Snapshots des OpenSearch Service wird eine interne Rolle erstellt (z. B. arn:aws:sts::332315457451:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-679203657591). Diese interne Rolle übernimmt die IAM-Rolle, die mit dem manuellen Snapshot verknüpft ist, und führt dann alle erforderlichen Operationen aus.

Um die Ausnahme für das Sicherheitstoken zu beheben, geben Sie unbedingt die IAM-Rolle an, die mit dem manuellen Snapshot verknüpft ist. Wenn dem manuellen Snapshot keine IAM-Rolle zugeordnet ist, müssen Sie eine Rolle erstellen. Weitere Informationen finden Sie unter Voraussetzungen für manuelle Snapshots.

Überprüfen Sie außerdem die Vertrauensbeziehung für die IAM-Rolle, die mit dem manuellen Snapshot verknüpft ist. Die Vertrauensstellung für die Rolle muss OpenSearch Service in der Haupt-Anweisung wie folgt angeben:

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

Snapshot-Status „PARTIAL“

Ein Snapshot wechselt aus folgenden Gründen in den Status „PARTIAL“:

Ein partieller Snapshot zeigt an, dass Daten von einem Shard nicht gespeichert werden konnten. Sie können weiterhin Daten aus einem partiellen Snapshot wiederherstellen, müssen jedoch frühere Snapshots verwenden, um fehlende Indizes wiederherzustellen. Um zu überprüfen, ob Ihr Cluster in den Status „PARTIAL“ eingetreten ist, überprüfen Sie Ihren Snapshot-Verlauf. Weitere Informationen finden Sie unter Wiederherstellen von Snapshots.

Problem mit Amazon S3 Glacier-Speicherklasse

Wenn Sie einen wiederhergestellten Snapshot in der Amazon Simple-Storage Service Glacier-Storage-Klasse speichern, vermeiden Sie es, eine Amazon S3 Glacier-Lebenszyklus-Regel auf den Bucket anzuwenden. Manuelle Schnappschüsse unterstützen die Speicherklasse Amazon S3 Glacier nicht. Wenn Sie daher eine Amazon S3 Glacier-Lebenszyklus-Richtlinie auf den S3 Bucket anwenden, müssen Sie alle Objekte, die übergehen, zurückverschieben.

Nachdem Sie die Objekte wieder in die Standardspeicherklasse Amazon S3 verschoben haben, können Sie die Objekte aus diesen Snapshots wiederherstellen. Weitere Informationen finden Sie unter Voraussetzungen für manuelle Snapshots.

Amazon OpenSearch Service ist der Nachfolger von Amazon Elasticsearch Service.