Migration von AWS Elasticsearch zum Elasticsearch Service auf Elastic Cloud
Zugriff auf den kompletten Funktionsumfang des Elastic Stack
Als Solutions Architect werde ich oft gefragt, wie die Migration einer Elastic-Bereitstellung vom Amazon Elasticsearch Service (AWS ES) zum Elasticsearch Service funktioniert. Dies liegt hauptsächlich daran, dass die Benutzer sämtliche Funktionen sowie die Betriebserfahrung und den Support von Elastic in Anspruch nehmen möchten, was bei Amazon nicht unbedingt möglich ist. Diese praktische Anleitung begleitet Sie beim sprichwörtlichen „Lift-and-Shift“ zum Elasticsearch Service von Elastic.
Für Ihre ersten Schritte mit dem Elasticsearch Service können Sie eine Bereitstellung mit unserer 14-tägigen Testversion erstellen. Wählen Sie AWS oder GCP als Cloudanbieter aus und legen Sie fest, in welcher Region Elastic Ihre Bereitstellung ausführen soll. AWS-Benutzer können den Elasticsearch Service direkt im AWS Marketplace hinzufügen, der in Ihre AWS-Abrechnung integriert ist.
Der Elasticsearch Service auf Elastic Cloud bietet verschiedene zusätzliche Funktionen gegenüber der Open Source-Distribution, zum Beispiel Canvas, APM, unbeaufsichtigtes Machine Learning, eingefrorene Indizes, SQL, Sicherheit (mehr als nur auf den Perimeter beschränkte IAM-Richtlinien) und Deployment-Vorlagen, die nur im Elasticsearch Service in der Elastic Cloud verfügbar sind. Wir fügen fortlaufend neue einzigartige Funktionen hinzu. Falls Sie Informationen zum Vergleich mit der AWS ES-Lösung brauchen, schauen Sie gelegentlich auf unserer AWS Elasticsearch-Vergleichsseite vorbei.
Migration von AWS Elasticsearch zum Elasticsearch Service auf Elastic Cloud
Diese Anleitung für die Migration von AWS ES zum Elasticsearch Service auf Elastic Cloud ist recht technisch und setzt einige Programmiererfahrung voraus. AWS ES-Cluster werden häufig auf einem VPC bereitgestellt, können sich jedoch auch auf einem öffentlich zugänglichen Endpunkt befinden. In dieser Anleitung verwenden wir das Python AWS SDK, um beide Szenarien zu unterstützen. Sie können eine beliebige Sprache mit AWS SDK verwenden (Java, Ruby, Go usw.), aber in dieser Anleitung zeigen wir nur Beispiele für Python.
Diese Anleitung besteht aus zwei Teilen:
- Erster Teil: Snapshot Ihres AWS ES-Clusters nach S3
- Zweiter Teil: Wiederherstellung von S3 in Ihrem Elastic Cloud-Konto
Hinweis: Falls Sie bereits manuell einen Snapshot Ihres AWS ES-Clusters nach S3 erstellt haben, können Sie direkt zum zweiten Teil springen.
Zunächst ist es wichtig, dass Sie einige der hier beschriebenen IAM-Sicherheitsschritte verstehen. Um einen Snapshot eines AWS ES-Clusters nach S3 zu erstellen, braucht Ihr AWS ES-Cluster Schreibberechtigungen für einen privaten S3-Bucket. Dafür ist eine IAM-Rolle und eine Richtlinie mit den notwendigen Berechtigungen erforderlich. Außerdem müssen wir eine IAM-Richtlinie mit einem IAM-Benutzer verknüpfen, den wir ebenfalls bei Bedarf erstellen. Unser Skript verwendet den IAM-Benutzer, um mit Ihrem AWS ES-Cluster zu kommunizieren, und Ihre von Elastic verwaltete Bereitstellung verwendet den Benutzer, um den Snapshot aus Ihrem S3-Bucket zu lesen.
Erster Teil – Snapshot nach S3
Im ersten Teil dieser Anleitung richten Sie eine Rolle, eine Richtlinie und einen Benutzer in IAM ein, um einen Snapshot Ihres AWS ES-Clusters nach S3 zu erstellen. Sie finden die AWS-Dokumentation für diesen Prozess hier: Arbeiten mit Index-Snapshots in Amazon Elasticsearch Service. Diese Referenz ist hilfreich, falls Sie Schwierigkeiten haben.
Sie werden sich verschiedene Variablen für den weiteren Verlauf notieren. Kopieren Sie die folgende Tabelle in eine Textdatei, um die Daten für den Rest der Anleitung griffbereit zu haben. Auf diese Weise können Sie die exakten Werte für Ihre Migration mühelos ausfüllen.
Beschreibung | Variable | Wert |
ARM der AWS ES-Domäne | DOMAIN_ARN | |
URL des AWS ES-Endpunkts | ES_ENDPOINT | |
AWS ES-Region | ES_REGION | |
AWS S3-Bucketname | S3_BUCKET_NAME | |
AWS S3-Region | S3_REGION_NAME | |
ARN der AWS IAM-Rolle | ROLE_ARN | |
ID des AWS IAM-Zugriffsschlüssels | ACCESS_KEY | |
Geheimer AWS IAM-Zugriffsschlüssel | SECRET_KEY | |
AWS ES-Snapshot-Repository | SNAPSHOT_REPO | mein-Snapshot-Repo |
AWS ES-Snapshotname | SNAPSHOT_NAME | mein-Snapshot |
Sie können die Werte für SNAPSHOT_REPO und SNAPSHOT_NAME anpassen oder die gezeigten Beispiele verwenden („mein-Snapshot-Repo“ und „mein-Snapshot“).
Schritt 1 - Erfassen Ihrer AWS ES-Daten
Wir brauchen einige grundlegende Informationen zu Ihrem AWS ES-Cluster, um einen Snapshot in S3 zu erstellen.
- Öffnen Sie den Elasticsearch Service in Ihrer AWS-Konsole.
- Wählen Sie die Domäne des Clusters aus, dessen Snapshot Sie erstellen möchten.
- Kopieren Sie den Wert unter „Domain ARN“ in Ihre Textdatei (DOMAIN_ARN).
- Kopieren Sie den URL-Wert unter „Endpoint“ in Ihre Textdatei (ES_ENDPOINT).
- Notieren Sie sich die AWS-Region (z. B. us-east-1) Ihres AWS ES-Clusters (ES_REGION).
Sie benötigen diese Information bei der Erstellung der IAM-Richtlinie und zum Senden von Befehlen an den Cluster.
Schritt 2 - Erstellen eines AWS S3-Buckets
Wir müssen einen S3-Bucket erstellen, um Ihren Snapshot zu speichern.
Wichtig: Ihr S3-Bucket muss sich in derselben Region befinden wie Ihr AWS ES-Cluster. Von dort aus können Sie den Snapshot in einer von Elastic verwalteten Bereitstellung in einer beliebigen Region oder bei einem beliebigen Cloudanbieter (AWS oder GCP) wiederherstellen.
- Öffnen Sie den S3-Dienst in Ihrer AWS-Konsole.
- Erstellen Sie einen privaten S3-Bucket.
Hinweis: Wenn Sie die Standardwerte beibehalten, wird Ihr Bucket privat und geschützt erstellt. - Kopieren Sie den Namen des Buckets in Ihre Textdatei (S3_BUCKET_NAME).
- Kopieren Sie die Region des Buckets in Ihre Textdatei (S3_REGION_NAME).
Sie benötigen diese Informationen, um ein Snapshot-Repository bei Elasticsearch zu registrieren.
Schritt 3 - Erstellen einer IAM-Rolle
Als Nächstes werden wir eine Rolle erstellen, um dem Amazon Elasticsearch Service die Berechtigung zum Erstellen eines Snapshots in S3 zu delegieren.
- Öffnen Sie den IAM-Dienst in Ihrer AWS-Konsole.
- Wählen Sie „Roles“ aus.
- Wählen Sie „Create Role“ aus.
- Wählen Sie „EC2“ als Dienst aus, der diese neue Rolle verwendet (wir werden diese Einstellung später ändern).
- Wählen Sie „Next: Permissions“ aus.
- Lassen Sie die Richtlinien in der Rolle fürs Erste leer.
- Wählen Sie „Next: Tags“ aus.
- Wählen Sie „Next: Review“ aus.
- Benennen Sie die Rolle: TheSnapshotRole
- Wählen Sie „Create Role“ aus.
- Wählen Sie die neu erstellte Rolle in der Liste der Rollen aus: TheSnapshotRole
- Wählen Sie „Trust relationships“ aus.
- Wählen Sie „Edit trust relationship“ aus.
- Kopieren Sie den folgenden Code und fügen Sie ihn in die Vertrauensbeziehung ein (ersetzen Sie den vorhandenen Code):
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
- Wählen Sie „Update Trust Policy“ aus.
- Wählen Sie „Permissions“ aus.
- Wählen Sie „Add inline policy“ aus.
- Wählen Sie die Registerkarte „JSON“ aus.
- Kopieren Sie den folgenden JSON-Code und fügen Sie ihn ein (ersetzen Sie den vorhandenen Code).
- Ersetzen Sie beide Vorkommnisse von „S3_BUCKET_NAME“ durch den korrekten Wert.
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME/*" ] } ] }
- Wählen Sie „Review policy“ aus.
- Benennen Sie die Richtlinie: TheSnapshotS3Policy
- Wählen Sie „Create policy“ aus.
- Kopieren Sie den Wert unter „Role ARN“ in Ihre Textdatei (ROLE_ARN).
Damit haben Sie eine IAM-Rolle mit einer Inline-Richtlinie erstellt, die Lese- und Schreibberechtigungen für Ihren S3-Bucket hat.
Schritt 4 - Erstellen einer IAM-Richtlinie
Wir müssen eine neue IAM-Richtlinie mit der Berechtigung erstellen, die oben beschriebene Rolle zu übernehmen, um das Snapshot-Repository zu registrieren.
- Öffnen Sie den IAM-Dienst in Ihrer AWS-Konsole.
- Wählen Sie „Policies“ aus.
- Wählen Sie „Create policy“ aus.
- Wählen Sie die Registerkarte „JSON“ aus.
- Kopieren Sie den folgenden JSON-Code und fügen Sie ihn ein (ersetzen Sie den vorhandenen Code).
- Ersetzen Sie „ROLE_ARN“ durch den korrekten Wert.
- Ersetzen Sie „DOMAIN_ARN“ durch den korrekten Wert.
- Ersetzen Sie beide Vorkommnisse von „S3_BUCKET_NAME“ durch den korrekten Wert.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "ROLE_ARN" }, { "Effect": "Allow", "Action": "es:ESHttpPut", "Resource": "DOMAIN_ARN/*" } ] }
- Wählen Sie „Review policy“ aus.
- Benennen Sie die Richtlinie: TheSnapshotPolicy
- Wählen Sie „Create policy“ aus.
Damit haben Sie eine IAM-Richtlinie erstellt, um Ihrer IAM-Rolle die Kommunikation mit Ihrer AWS ES-Domäne zu ermöglichen.
Schritt 5 - Erstellen eines IAM-Benutzers
Falls Sie noch keinen IAM-Benutzer haben, müssen Sie einen Benutzer erstellen und ihm den Zugriff auf Ihren privaten S3-Bucket erlauben. Falls Sie bereits einen IAM-Benutzer haben, können Sie ihm einfach die folgende IAM-Richtlinie anfügen.
- Öffnen Sie den IAM-Dienst in Ihrer AWS-Konsole.
- Wählen Sie „Users“ aus.
- Wählen Sie „Add user“ aus.
- Benennen Sie den Benutzer: TheSnapshotUser
- Aktivieren Sie das Feld „Programmatic access“.
- Wählen Sie „Next: Permissions“ aus.
- Wählen Sie das Feld „Attach existing policies directly“ aus.
- Geben Sie „TheSnapshot“ ein, um die Richtlinien zu filtern.
- Aktivieren Sie das Kontrollkästchen neben der Richtlinie „TheSnapshotPolicy“.
- Wählen Sie „Next: Tags“ aus.
- Wählen Sie „Next: Review“ aus.
- Wählen Sie „Create User“ aus.
- Kopieren Sie den Wert unter „Access key ID“ in Ihre Textdatei (ACCESS_KEY).
- Wählen Sie „Show“ unter „Secret access key“ aus.
- Kopieren Sie den Wert unter „Secret access key“ in Ihre Textdatei (SECRET_KEY).
- Wählen Sie „Close“ aus.
- Wählen Sie den neu erstellten Benutzer in der Liste der Benutzer aus: TheSnapshotUser
- Wählen Sie „Add inline policy“ aus.
- Wählen Sie die Registerkarte „JSON“ aus.
- Kopieren Sie den folgenden JSON-Code und fügen Sie ihn ein (ersetzen Sie den vorhandenen Code).
- Ersetzen Sie beide Vorkommnisse von „S3_BUCKET_NAME“ durch den korrekten Wert.
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME/*" ] } ] }
- Wählen Sie „Review policy“ aus.
- Benennen Sie die Richtlinie: TheSnapshotUserS3Policy
- Wählen Sie „Create policy“ aus.
Damit haben Sie einen IAM-Benutzer erstellt, der einen manuellen Snapshot erstellen und aus dem Snapshot lesen kann.
Schritt 6 - Konfigurieren des Python AWS SDK
Bevor wir einen manuellen Snapshot ausführen, müssen wir ein Snapshot-Repository bei Ihrer Bereitstellung registrieren. Dazu müssen Sie eine signierte Anfrage an Ihren AWS ES-Cluster senden. Eine der einfachsten Möglichkeiten, eine solche Anfrage zu senden, ist das Python AWS SDK. Sie können auch andere AWS SDKs verwenden (Java, Ruby, Go usw.), aber das folgende Beispiel verwendet das Python AWS SDK.
Wir verwenden das Paketinstallationsprogramm von Python (PIP, pip3
), um das Python AWS SDK zu installieren. Dieses Programm benötigt Python v3. Falls Sie Python v3 nicht installiert haben, genügt es, pip3
zu installieren. Python v3 ist eine Abhängigkeit von pip3
und wird daher vom Paketmanager Ihres Betriebssystems automatisch installiert. Falls dabei Schwierigkeiten auftreten, finden Sie Hinweise in den Python-Installationsdokumenten.
Installieren von pip3
Um pip3
unter Red Hat und Derivaten zu installieren, verwenden Sie yum:
$ sudo yum -y install python3-pip
In manchen Fedora-Distributionen hat das pip3
-Paket eine andere Bezeichnung:
$ sudo yum -y install python36-pip
Falls keiner der gezeigten Paketnamen funktioniert, können Sie danach suchen:
$ yum search pip
Auf Debian-Derivaten wie etwa Ubuntu verwenden Sie apt-get:
$ sudo apt-get -y install python3-pip
Installieren des Python AWS SDK
Nachdem Sie pip3
installiert haben, können Sie das Python AWS SDK mit dem Namen boto3
installieren:
$ pip3 install --user boto3 requests_aws4auth Collecting boto3 ... Successfully installed boto3-1.9.106 requests-aws4auth-0.9 ...
Hinweis: Wenn Sie das Flag --user
angeben, ist kein root-Zugriff erforderlich.
Wir müssen ein ~/.aws
-Verzeichnis erstellen, um unsere AWS-Anmeldeinformationen
zu speichern. Führen Sie den folgenden Befehl aus, um das Verzeichnis zu erstellen:
$ mkdir ~/.aws
Erstellen Sie die Datei credentials
mit einem Editor Ihrer Wahl. Wir verwenden der Einfachheit halber nano
:
$ nano ~/.aws/credentials
Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie dabei die beiden Variablen in Großbuchstaben.
[default] aws_access_key_id = ACCESS_KEY aws_secret_access_key = SECRET_KEY
Drücken Sie Strg+x, um nano
zu beenden, und folgen Sie den Anweisungen, um die Datei zu speichern.
Anschließend werden wir einige Python-Skripts für die benötigten Aufgaben schreiben.
Schritt 7 - Manueller Snapshot von AWS ES
Wir werden als Test ein Python-Skript ausführen, um die Indizes in unserem AWS ES-Cluster aufzulisten. Damit stellen wir sicher, dass unsere AWS-Anmeldeinformationen korrekt sind und wir mit dem Cluster kommunizieren können.
Erstellen Sie die Datei indices.py
mit einem Editor Ihrer Wahl. Wir verwenden der Einfachheit halber nano
:
$ nano indices.py
Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie dabei die beiden Variablen in Großbuchstaben durch Ihre Werte:
import boto3, requests from requests_aws4auth import AWS4Auth host = 'ES_ENDPOINT' region = 'ES_REGION' creds = boto3.Session().get_credentials() auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token) print("Liste der Indizes aus AWS ES ...") req = requests.get(host + '/_cat/indices?v', auth=auth) print("HTTP-Antwortcode: " + str(req.status_code) + '\n' + req.text)
Drücken Sie Strg+x, um nano
zu beenden, und folgen Sie den Anweisungen, um die Datei zu speichern.
Führen Sie das Python-Skript aus.
$ python3 indices.py
Ihre Ausgabe sollte in etwa wie folgt aussehen:
Liste der Indizes aus AWS ES ... HTTP-Antwortcode: 200 health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open testindex yME2BphgR3Gt1ln6n03nHQ 5 1 1 0 4.4kb 4.4kb
Erstellen Sie anschließend die Datei register.py
mit einem Editor Ihrer Wahl.
$ nano register.py
Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie dabei die sieben Variablen in Großbuchstaben durch Ihre Werte:
import boto3, requests from requests_aws4auth import AWS4Auth host = 'ES_ENDPOINT' region = 'ES_REGION' repo_name = 'SNAPSHOT_REPO' snapshot_name = 'SNAPSHOT_NAME' s3_region_name = 'S3_REGION_NAME' s3_bucket_name = 'S3_BUCKET_NAME' role_arn = 'ROLE_ARN' creds = boto3.Session().get_credentials() auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token) headers = {"Content-Type": "application/json"} payload = { "type": "s3", "settings": { "region": s3_region_name, "bucket": s3_bucket_name, "role_arn": role_arn } } print("Registriere Snapshot bei AWS ES ...") url = host + '/_snapshot/' + repo_name req = requests.put(url, auth=auth, json=payload, headers=headers) print("HTTP-Antwortcode: " + str(req.status_code) + '\n' + req.text)
Drücken Sie Strg+x, um nano
zu beenden, und folgen Sie den Anweisungen, um die Datei zu speichern.
Führen Sie das Python-Skript aus.
$ python3 register.py
Ihre Ausgabe sollte in etwa wie folgt aussehen:
Registriere Snapshot bei AWS ES ... HTTP-Antwortcode: 200 {"acknowledged":true}
Erstellen Sie anschließend die Datei snapshot.py
mit einem Editor Ihrer Wahl.
$ nano snapshot.py
Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie dabei die vier Variablen in Großbuchstaben durch Ihre Werte:
import boto3, requests from requests_aws4auth import AWS4Auth host = 'ES_ENDPOINT' region = 'ES_REGION' repo_name = 'SNAPSHOT_REPO' snapshot_name = 'SNAPSHOT_NAME' creds = boto3.Session().get_credentials() auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token) print("Erstelle AWS ES-Snapshot ...") url = host + '/_snapshot/' + repo_name + '/' + snapshot_name req = requests.put(url, auth=auth) print("HTTP-Antwortcode: " + str(req.status_code) + '\n' + req.text)
Drücken Sie Strg+x, um nano
zu beenden, und folgen Sie den Anweisungen, um die Datei zu speichern.
Führen Sie das Python-Skript aus.
$ python3 snapshot.py
Ihre Ausgabe sollte in etwa wie folgt aussehen:
Erstelle AWS ES-Snapshot ... HTTP-Antwortcode: 200 {"accepted":true}
Hinweis: Die Erstellungsdauer von Snapshots hängt von der Größe der AWS ES-Domäne ab. Laut der AWS-Dokumentation wird bei besonders langen Snapshot-Vorgängen manchmal die Meldung „504 GATEWAY_TIMEOUT“ angezeigt. Laut der Dokumentation können Sie diesen Fehler ignorieren und auf die erfolgreiche Fertigstellung des Snapshots warten.
Zum Abschluss werden wir den Status unseres Snapshots überprüfen. Erstellen Sie die Datei status.py
.
$ nano status.py
Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie dabei die vier Variablen in Großbuchstaben durch Ihre Werte:
import boto3, requests from requests_aws4auth import AWS4Auth host = 'ES_ENDPOINT' region = 'ES_REGION' repo_name = 'SNAPSHOT_REPO' snapshot_name = 'SNAPSHOT_NAME' creds = boto3.Session().get_credentials() auth = AWS4Auth(creds.access_key, creds.secret_key, region, 'es', session_token=creds.token) print("Rufe Status des Snapshots in AWS ES ab ...") url = host + '/_snapshot/' + repo_name + '/' + snapshot_name + '?pretty' req = requests.get(url, auth=auth) print("HTTP-Antwortcode: " + str(req.status_code) + '\n' + req.text)
Drücken Sie Strg+x, um nano
zu beenden, und folgen Sie den Anweisungen, um die Datei zu speichern.
Führen Sie das Python-Skript aus.
$ python3 status.py
Ihre Ausgabe sollte in etwa wie folgt aussehen:
Rufe Status des Snapshots in AWS ES ab ... HTTP-Antwortcode: 200 { "snapshots" : [ { "snapshot" : "my-snapshot", "uuid" : "ClYKt5g8QFO6r3kTCEzjqw", "version_id" : 6040299, "version" : "6.4.2", "indices" : [ "testindex" ], "include_global_state" : true, "state" : "SUCCESS", "start_time" : "2019-03-03T14:46:04.094Z", "start_time_in_millis" : 1551624364094, "end_time" : "2019-03-03T14:46:04.847Z", "end_time_in_millis" : 1551624364847, "duration_in_millis" : 753, "failures" : [ ], "shards" : { "total" : 5, "failed" : 0, "successful" : 5 } } ] }
Falls "state":"SUCCESS"
ausgegeben wird, haben Sie Ihren Snapshot in S3 erfolgreich erstellt und können mit dem zweiten Teil fortfahren!
Zweiter Teil – Wiederherstellen aus S3
Im zweiten Teil dieser Anleitung stellen Sie eine von Elastic verwaltete Bereitstellung aus einem manuellen Snapshot in S3 wieder her.
Für diesen Teil können Sie eine von Elastic verwaltete Bereitstellung in AWS oder GCP verwenden.
Schritt 1 - Größe Ihrer Bereitstellung bestimmen
Die im Elasticsearch Service auf Elastic Cloud erstellte Bereitstellung sollte dieselbe Menge an Ressourcen haben wie Ihr AWS ES-Cluster. Verwenden Sie die Schieberegler und passen Sie die Anzahl der Knoten an die Größe Ihres Clusters in AWS ES an. Speichern Sie Ihre Änderungen, bevor Sie fortfahren.
Schritt 2 - Hinzufügen eines benutzerdefinierten Repository
Öffnen Sie Kibana in Ihrer von Elastic verwalteten Bereitstellung (nicht in Ihrem AWS-Cluster) und wechseln Sie zu „Dev-Tools“.
Kopieren Sie den folgenden API-Aufruf nach Dev-Tools und ersetzen Sie die fünf Variablen:
PUT /_snapshot/SNAPSHOT_REPO { "type": "s3", "settings": { "bucket": "S3_BUCKET_NAME", "region": "S3_REGION_NAME", "access_key": "ACCESS_KEY", "secret_key": "SECRET_KEY", "compress": true } }
Führen Sie die Anfrage aus.
Daraufhin sollten Sie die folgende Antwort erhalten:
{ "acknowledged": "true" }
Sie haben es beinahe geschafft.
Schritt 3 - Wiederherstellen aus S3
Zum Abschluss werden wir den Snapshot aus dem Repository wiederherstellen, das wir soeben registriert haben.
Kopieren Sie den folgenden API-Aufruf nach Dev-Tools und ersetzen Sie die zwei Variablen:
POST /_snapshot/SNAPSHOT_REPO/SNAPSHOT_NAME/_restore
Daraufhin sollten Sie die folgende Antwort erhalten:
{ "accepted": "true" }
Mit dem folgenden Befehl können Sie den Fortschritt Ihrer Wiederherstellung überprüfen:
GET /_snapshot/SNAPSHOT_REPO/SNAPSHOT_NAME/_status
Falls "state":"SUCCESS"
angezeigt wird, wurde Ihre Wiederherstellung erfolgreich abgeschlossen:
{ "snapshots": [ { "snapshot": "my-snapshot", "repository": "my-snapshot-repo", "state": "SUCCESS", ... } ] }
Glückwunsch! Sie haben Ihre „Lift-and-Shift“-Migration von AWS ES zum Elasticsearch Service erfolgreich abgeschlossen.
Fazit
Sie befinden sich jetzt im Elasticsearch Service auf Elastic Cloud und können nicht nur Funktionen verwenden, die in AWS ES nicht verfügbar sind, sondern können sich auch darauf verlassen, dass Ihre Bereitstellung von den Experten verwaltet wird, die den Elastic Stack entwickelt haben. Und falls auf dem Weg irgendwelche Schwierigkeiten auftreten sollten, helfen Ihnen die Experten beim Elastic Support jederzeit gerne. Falls Sie noch nicht mit dem Elasticsearch Service auf Elastic Cloud arbeiten, können Sie jederzeit unsere 14-tägige, kostenlose Testversion ausprobieren, und falls Sie Fragen haben, können Sie uns jederzeit kontaktieren.