Zephyrnet-Logo

Verwenden Sie Amazon OpenSearch Ingestion, um zu Amazon OpenSearch Serverless | zu migrieren Amazon Web Services

Datum:

Amazon OpenSearch ohne Server ist eine On-Demand-Auto-Scaling-Konfiguration für Amazon OpenSearch-Dienst. Seit seiner Veröffentlichung ist das Interesse an OpenSearch Serverless stetig gewachsen. Kunden ziehen es vor, die Kapazität automatisch vom Dienst verwalten zu lassen, anstatt die Kapazität manuell bereitstellen zu müssen. Bisher waren Kunden darauf angewiesen, benutzerdefinierten Code oder Lösungen von Drittanbietern zu verwenden, um die Daten zwischen bereitgestellten OpenSearch Service-Domänen und OpenSearch Serverless zu verschieben.

Wir haben kürzlich eine Funktion mit eingeführt Amazon OpenSearch-Aufnahme (OSI), um diese Migration noch einfacher zu gestalten. OSI ist ein vollständig verwalteter, serverloser Datensammler, der Protokoll-, Metrik- und Trace-Daten in Echtzeit an OpenSearch Service-Domänen und serverlose OpenSearch-Sammlungen liefert.

In diesem Beitrag beschreiben wir die Schritte zur Migration der Daten zwischen bereitgestellten OpenSearch Service-Domänen und OpenSearch Serverless. Die Migration von Metadaten wie Sicherheitsrollen und Dashboard-Objekten wird in einem weiteren Folgebeitrag behandelt.

Lösungsüberblick

Das folgende Diagramm zeigt die erforderlichen Komponenten zum Verschieben von Daten zwischen vom OpenSearch Service bereitgestellten Domänen und OpenSearch Serverless mithilfe von OSI. Sie verwenden OSI mit OpenSearch Service als Quelle und einer OpenSearch Serverless-Sammlung als Senke.

Voraussetzungen:

Führen Sie vor Beginn die folgenden Schritte aus, um die erforderlichen Ressourcen zu erstellen:

  1. Erstellen Sie ein AWS Identity and Access Management and (IAM)-Rolle, die die OpenSearch-Ingestion-Pipeline übernimmt, um in die OpenSearch Serverless-Sammlung zu schreiben. Diese Rolle muss im angegeben werden sts_role_arn Parameter der Pipeline-Konfiguration.
  2. Hängen Sie eine Berechtigungsrichtlinie an zur Rolle hinzufügen, damit sie Daten aus der OpenSearch Service-Domäne lesen kann. Im Folgenden finden Sie eine Beispielrichtlinie mit den geringsten Berechtigungen:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Action":"es:ESHttpGet",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_cat/indices",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/scroll",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search"
             ]
          },
          {
             "Effect":"Allow",
             "Action":"es:ESHttpPost",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search/point_in_time",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search/scroll"
             ]
          },
          {
             "Effect":"Allow",
             "Action":"es:ESHttpDelete",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/point_in_time",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/scroll"
             ]
          }
       ]
    }

  3. Hängen Sie eine Berechtigungsrichtlinie an zur Rolle hinzufügen, damit diese Daten an die Sammlung senden kann. Im Folgenden finden Sie eine Beispielrichtlinie mit den geringsten Berechtigungen:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "aoss:BatchGetCollection",
            "aoss:APIAccessAll"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:aoss:{region}:{your-account-id}:collection/{collection-id}"
        },
        {
          "Action": [
            "aoss:CreateSecurityPolicy",
            "aoss:GetSecurityPolicy",
            "aoss:UpdateSecurityPolicy"
          ],
          "Effect": "Allow",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aoss:collection": "{collection-name}"
            }
          }
        }
      ]
    }

  4. Konfigurieren Sie die Rolle, die übernommen werden soll Vertrauensverhältnis, wie folgt:
    {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "osis-pipelines.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }

  5. Es wird empfohlen, das hinzuzufügen aws:SourceAccount und aws:SourceArn Bedingungsschlüssel für die Richtlinie zum Schutz vor verwirrtes stellvertretendes Problem:
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "{your-account-id}"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:osis:{region}:{your-account-id}:pipeline/*"
        }
    }

  6. Ordnen Sie den OpenSearch Ingestion-Domänenrollen-ARN als Backend-Benutzer zu (als all_access Benutzer) an den Domänenbenutzer. Wir zeigen ein vereinfachtes Beispiel für die Verwendung all_access Rolle. Stellen Sie für Produktionsszenarien sicher, dass Sie eine Rolle mit gerade ausreichend Lese- und Schreibberechtigungen verwenden.
  7. Erstellen Sie eine OpenSearch Serverless-Sammlung, wo die Daten erfasst werden.
  8. Ordnen Sie eine Datenrichtlinie zu, wie im folgenden Code gezeigt, um der OpenSearch Ingestion-Rolle Berechtigungen für die Sammlung zu erteilen:
    [
      {
        "Rules": [
          {
            "Resource": [
              "index/collection-name/*"
            ],
            "Permission": [
              "aoss:CreateIndex",
              "aoss:UpdateIndex",
              "aoss:DescribeIndex",
              "aoss:WriteDocument",
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
          "arn:aws:iam::{account-id}:role/pipeline-role"
        ],
        "Description": "Pipeline role access"
      }
    ]

  9. Wenn die Sammlung als VPC-Sammlung definiert ist, müssen Sie eine erstellen Netzwerkpolitik und konfigurieren Sie es in der Aufnahmepipeline.

Jetzt können Sie Daten von Ihrer bereitgestellten Domäne nach OpenSearch Serverless verschieben.

Verschieben Sie Daten von bereitgestellten Domänen zu Serverless

Richten Sie die Amazon OpenSearch-Aufnahme ein
Um zu beginnen, müssen Sie über eine aktive OpenSearch Service-Domäne (Quelle) und eine OpenSearch Serverless-Sammlung (Senke) verfügen. Führen Sie die folgenden Schritte aus, um eine OpenSearch-Ingestion-Pipeline für die Migration einzurichten:

  1. Wählen Sie in der OpenSearch Service-Konsole aus Pipeline für Verschlucken im Navigationsbereich.
  2. Auswählen Erstellen Sie eine Pipeline.
  3. Aussichten für PipelinenameGeben Sie einen Namen ein (z. B. octank-migration).
  4. Aussichten für Pipeline-Kapazitätkönnen Sie die minimale und maximale Kapazität zum Hochskalieren der Ressourcen definieren. Vorerst können Sie das Standardminimum auf 1 und das Maximum auf 4 belassen.
  5. Aussichten für KonfigurationsentwurfWählen AWS-OpenSearchDataMigrationPipeline.
  6. Aktualisieren Sie die folgenden Informationen für die Quelle:
    1. Kommentar entfernen hosts und geben Sie den Endpunkt des vorhandenen OpenSearch Service-Endpunkts an.
    2. Kommentar entfernen distribution_version wenn Ihr Quellcluster ein OpenSearch Service-Cluster mit aktiviertem Kompatibilitätsmodus ist; Andernfalls lassen Sie es kommentiert.
    3. Kommentar entfernen indices, include, index_name_regexund fügen Sie einen Indexnamen oder ein Muster hinzu, das Sie migrieren möchten (z. B. octank-iot-logs-2023.11.0*).
    4. Aktualisierung region für aws wo sich Ihre Quelldomäne befindet (z. B. us-west-2).
    5. Aktualisierung sts_role_arn für aws an die Rolle, die die Berechtigung zum Lesen von Daten aus der OpenSearch Service-Domäne hat (z. B. arn:aws:iam::111122223333:role/osis-pipeline). Diese Rolle sollte als Backend-Rolle innerhalb der OpenSearch Service-Sicherheitsrollen hinzugefügt werden.
  7. Aktualisieren Sie die folgenden Informationen für die Senke:
    1. Kommentar entfernen hosts und geben Sie den Endpunkt des vorhandenen OpenSearch Serverless-Endpunkts an.
    2. Aktualisierung sts_role_arn für aws an die Rolle, die berechtigt ist, Daten in die OpenSearch Serverless-Sammlung zu schreiben (z. B. arn:aws:iam::111122223333:role/osis-pipeline). Diese Rolle sollte als Teil der Datenzugriffsrichtlinie in der OpenSearch Serverless-Sammlung hinzugefügt werden.
    3. Aktualisieren Sie die serverless Flagge zu sein true.
    4. Aussichten für index, können Sie es als Standard belassen, wodurch die Metadaten aus dem Quellindex abgerufen und im Ziel auf denselben Namen wie in den Quellen geschrieben werden. Wenn Sie alternativ einen anderen Indexnamen am Ziel haben möchten, ändern Sie diesen Wert durch den gewünschten Namen.
    5. Aussichten für document_idkönnen Sie die ID aus den Dokumentmetadaten in der Quelle abrufen und diese im Ziel verwenden. Beachten Sie, dass benutzerdefinierte Dokument-IDs nur für den Sammlungstyp SEARCH unterstützt werden. Wenn Sie Ihre Sammlung als TIMESERIES oder VECTORSEARCH haben, sollten Sie diese Zeile kommentieren.
  8. Als Nächstes können Sie Ihre Pipeline validieren, um die Konnektivität von Quelle und Senke zu überprüfen und sicherzustellen, dass der Endpunkt vorhanden und zugänglich ist.
  9. Aussichten für Netzwerkeinstellungen, wählen Sie Ihre bevorzugte Einstellung:
    1. Auswählen VPC-Zugriff und wählen Sie Ihre VPC, Ihr Subnetz und Ihre Sicherheitsgruppe aus, um den Zugriff privat einzurichten.
    2. Auswählen Öffentliche öffentlichen Zugang zu nutzen. AWS empfiehlt die Verwendung eines VPC-Endpunkts für alle Produktions-Workloads. In dieser exemplarischen Vorgehensweise wählen Sie jedoch aus Öffentliche.
  10. Aussichten für Protokollveröffentlichungsoption, können Sie entweder eine neue erstellen Amazon CloudWatch Gruppe oder verwenden Sie eine vorhandene CloudWatch-Gruppe, um die Aufnahmeprotokolle zu schreiben. Dadurch erhalten Sie Zugriff auf Informationen zu Fehlern und Warnungen, die während des Vorgangs auftreten und bei der Fehlerbehebung hilfreich sein können. Wählen Sie für diese exemplarische Vorgehensweise Erstelle eine neue Gruppe.
  11. Auswählen Weiterund überprüfen Sie die Details, die Sie für Ihre Pipeline-Einstellungen angegeben haben.
  12. Auswählen Pipeline erstellen.

Das Erstellen der Aufnahmepipeline sollte einige Minuten dauern.
Die folgende Grafik zeigt eine kurze Demonstration der Erstellung der OpenSearch-Ingestion-Pipeline mithilfe der vorherigen Schritte.

Überprüfen Sie die aufgenommenen Daten in der OpenSearch Serverless-Zielsammlung

Nachdem die Pipeline erstellt und aktiv ist, melden Sie sich bei OpenSearch Dashboards für Ihre OpenSearch Serverless-Sammlung an und führen Sie den folgenden Befehl aus, um die Indizes aufzulisten:

GET _cat/indices?v

Die folgende Grafik zeigt eine kurze Demonstration der Auflistung der Indizes vor und nach der Aktivierung der Pipeline.

Zusammenfassung

In diesem Beitrag haben wir gesehen, wie OpenSearch Ingestion Daten in eine OpenSearch Serverless-Sammlung aufnehmen kann, ohne dass Lösungen von Drittanbietern verwendet werden müssen. Bei minimaler Konfiguration des Datenproduzenten wurden Daten automatisch in die Sammlung aufgenommen. Mit OSI können Sie außerdem die Daten aus der ES7.x-Version vor der Aufnahme in eine OpenSearch Service-Domäne oder eine OpenSearch Serverless-Sammlung umwandeln oder neu indizieren. OSI macht die Bereitstellung, Skalierung oder Verwaltung von Servern überflüssig. AWS bietet verschiedene RESSOURCEN damit Sie mit OpenSearch Ingestion schnell mit dem Aufbau von Pipelines beginnen können. Sie können verschiedene integrierte Funktionen verwenden Pipeline-Integrationen um schnell Daten aufzunehmen Amazon DynamoDB, Amazon Managed Streaming für Apache Kafka (Amazon MSK), Amazon Security Lake, Fluent Bit und viele mehr. Die folgende OpenSearch-Aufnahme Blaupausen ermöglichen Ihnen den Aufbau von Datenpipelines mit minimalen Konfigurationsänderungen.


Über die Autoren

Muthu Pitchaimani ist ein Suchspezialist bei Amazon OpenSearch Service. Er baut umfangreiche Suchanwendungen und -lösungen. Muthu interessiert sich für die Themen Netzwerke und Sicherheit und hat seinen Sitz in Austin, Texas.

Prashant Agrawal ist Senior Search Specialist Solutions Architect beim Amazon OpenSearch Service. Er arbeitet eng mit Kunden zusammen, um ihnen bei der Migration ihrer Workloads in die Cloud zu helfen, und hilft bestehenden Kunden bei der Feinabstimmung ihrer Cluster, um eine bessere Leistung zu erzielen und Kosten zu sparen. Bevor er zu AWS kam, half er verschiedenen Kunden, OpenSearch und Elasticsearch für ihre Such- und Protokollanalyse-Anwendungsfälle zu verwenden. Wenn er nicht arbeitet, reist er oft und erkundet neue Orte. Kurz gesagt, er macht gerne Eat → Travel → Repeat.

Rahul Sharma ist Technical Account Manager bei Amazon Web Services. Er ist begeistert von den Datentechnologien, die dabei helfen, Daten als strategisches Gut zu nutzen, und hat seinen Sitz in New York City, New York.

spot_img

Neueste Intelligenz

spot_img