Direkt zum Inhalt

Wie behebe ich den manuellen Snapshot-Fehler in meinem OpenSearch Service-Cluster?

Lesedauer: 5 Minute
0

Wenn ich einen manuellen Snapshot für meinen Amazon OpenSearch Service-Cluster wiederherstelle und versuche, ein Repository zu registrieren oder auf ein Repository zuzugreifen, erhalte ich eine Fehlermeldung.

Lösung

Wenn du den richtigen Migrationsprozess für deine OpenSearch Service-Version nicht abschließt, erhältst du eine Fehlermeldung. Um das Problem zu beheben, schließe die Lösung für den Fehler ab, der dir angezeigt wird.

403 Unauthorized error

Wenn du die fein gestufte Zugriffskontrolle (FGAC) in deiner OpenSearch Service-Domain aktiviert hast, erhältst du möglicherweise eine Fehlermeldung, die der folgenden ähnelt, wenn du einen Snapshot erstellst:

"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"

Der vorherige Fehler tritt auf, wenn du nicht die richtigen Anmeldeinformationen angibst.

Um dieses Problem zu beheben, führe den folgenden curl-Befehl aus, um einen username:password-Parameter anzugeben, wenn du einen manuellen Snapshot erstellst:

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

Hinweis: Um FGAC für deine OpenSearch Service-Domain zu aktivieren, musst du ein Superuser sein. Du kannst entweder deinen Superuser-Namen und dein Passwort verwenden oder eine AWS Identity and Access Management (IAM)-Rolle als Superuser festlegen. Wenn du auf deinen Cluster-Snapshot zugreifst, gib deine Superuser-Anmeldeinformationen oder deine IAM-Rolle an. Wenn du eine IAM-Rolle angibst, muss die IAM-Rolle AWS Signature Version 4 verwenden, um die HTTP-Anfragen zu signieren. Weitere Informationen zu FGAC- und IAM-Rollen findest du unter OpenSearch Service-Domains erstellen und verwalten.

Du musst außerdem die Rolle manage_snapshots einer IAM-Rolle zuordnen und ein Snapshot-Repository registrieren. Die Rolle manage_snapshots muss über die Berechtigungen IAM:PassRole verfügen, um die IAM-Rolle übernehmen zu können. Weitere Informationen findest du unter Voraussetzungen.

illegal_state_exception

Wenn du einen Amazon Simple Storage Service (Amazon S3)-Bucket verwendest, um manuelle Snapshots für mehrere Domains zu erstellen, erhältst du eine Fehlermeldung, die der folgenden ähnelt:

"type: illegal_state_exception
reason: Can't get text on a FIELD_NAME at 1:1838
status: 500"

Um den vorherigen Fehler zu beheben, erstelle einen neuen Amazon S3-Bucket und einen manuellen Snapshot oder lösche alle Daten aus dem vorhandenen Bucket.

Repository_missing_exception

Bevor du einen manuellen Index-Snapshot erstellst, musst du ein manuelles Snapshot-Repository beim OpenSearch Service registrieren. Du musst auch die Voraussetzungen für einen manuellen Snapshot erfüllen.

Wenn du dein Snapshot-Repository nicht registriert hast, der Repository-Name falsch ist oder du die Voraussetzungen nicht erfüllt hast, erhältst du die folgende Fehlermeldung:

"type: repository_missing_exception
reason: [snapshot-repository-name] missing
status: 404"

Concurrent_snapshot_execution_exception

Wenn du versuchst, einen Snapshot zu erstellen, während ein anderer Snapshot in Bearbeitung ist, erhältst du die folgende Fehlermeldung:

type: concurrent_snapshot_execution_exception
reason: [snapshot-repository-name:snapshot-name] a snapshot is already running“

Führe den folgenden curl-Befehl aus, um zu überprüfen, ob ein anderer Snapshot gerade in Bearbeitung ist:

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

Wenn ein Snapshot in Bearbeitung ist, warte, bis der aktuelle Snapshot abgeschlossen ist. Wenn dein Snapshot hängengeblieben ist, überprüfe deinen Verlauf der stündlichen Snapshots. Weitere Informationen findest du unter Warum kann ich einen Index nicht löschen oder meinen OpenSearch Service-Cluster nicht aktualisieren?

Snapshot_restore_exception

Wenn du Daten von einem On-Premises-Cluster zu einer OpenSearch Service-Domain migrierst, wird möglicherweise die folgende Fehlermeldung angezeigt:

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“

Wenn du einen Snapshot eines vorhandenen Clusters erstellst, der auf einer anderen Version von Amazon Elasticsearch als OpenSearch Service ausgeführt wird, tritt der vorherige Fehler auf. Um dieses Problem zu beheben, aktualisiere deine Elasticsearch-Version. Oder verwende den API-Vorgang für die Remote-Neuindizierung, um deine Indizes zu migrieren.

Wenn du den FGAC der Domain aktiviert hast und versuchst, die Indizes aus dem Snapshot wiederherzustellen, wird möglicherweise die folgende Fehlermeldung angezeigt:

"type: security_exception
reason: no permissions for [] and User [name=username, backend_roles=[], requestedTenant=]
status: 403"

Um den vorherigen Fehler zu beheben, führe den folgenden curl-Befehl aus, um die Sicherheitsindizes auszuschließen:

curl -XPOST -u 'username:password' "https://opensearch-domain-endpoint/_snapshot/snapshot-repository/snapshot-id/_restore" -H 'Content-Type: application/json' -d'
{  
"indices": "-.opensearch*,-.opendistro*,-.kibana*"
}'

Hinweis: Ersetze im vorherigen Befehl die Beispielwerte durch deine Werte.

a_w_s_security_token_service_exception

Wenn die IAM-Rolle, die deinem manuellen Snapshot zugeordnet ist, keine Vertrauensbeziehung für es.amazonaws.com herstellt, wird die folgende Fehlermeldung angezeigt:

"type: repository_exception
reason: [es_01082021_repo] Could not determine repository generation from root blobs
type: i_o_exception
reason: Exception when listing blobs by prefix [index-]
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"

Um dieses Problem zu beheben, stelle sicher, dass du die IAM-Rolle angibst, die dem manuellen Snapshot zugeordnet ist, wenn du das Snapshot-Repository registrierst. Wenn du keine IAM-Rolle hast, erstelle eine.

Stelle außerdem sicher, dass die Vertrauensbeziehung für die IAM-Rolle OpenSearch Service in der Prinzipal-Anweisung angibt.

Beispiel für eine Vertrauensbeziehung:

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

Snapshot-Status TEILWEISE

Ein Snapshot wechselt aus den folgenden Gründen in den Status TEILWEISE:

Wenn sich der Snapshot im Status TEILWEISE befindet, hat OpenSearch Service keine Daten von einem Shard gespeichert. Du kannst Daten aus einem teilweisen Snapshot wiederherstellen, du musst jedoch frühere Snapshots verwenden, um fehlende Indizes wiederherzustellen. Um zu überprüfen, ob sich dein Cluster im Status TEILWEISE befindet, überprüfe deinen Snapshot-Verlauf.

Problem mit Amazon S3 Glacier-Speicherklasse

Wenn du einen wiederhergestellten Snapshot in einer der S3 Glacier-Speicherklassen speicherst, wende keine Amazon S3 Glacier Lifecycle-Regel für den Bucket an. Manuelle Snapshots unterstützen die S3 Glacier-Speicherklassen nicht. Wenn du eine S3 Glacier Lifecycle-Richtlinie auf den Bucket anwendest, verschiebe Objekte, die in den Bucket übergehen, zurück in eine Standardspeicherklasse.

Nachdem du die Objekte zurück verschoben hast, kannst du die Objekte aus den Snapshots wiederherstellen. Weitere Informationen findest du unter Voraussetzungen.

Ähnliche Informationen

Wie behebe ich den Fehler in Amazon OpenSearch Service?"cannot restore index [.kibana]"

Manuelle Snapshots erzeugen

AWS OFFICIALAktualisiert vor 2 Monaten