Tutorial: Erfassen von Daten in eine Sammlung mithilfe von Amazon OpenSearch Ingestion - OpenSearch Amazon-Dienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial: Erfassen von Daten in eine Sammlung mithilfe von Amazon OpenSearch Ingestion

In diesem Tutorial erfahren Sie, wie Sie mit Amazon OpenSearch Ingestion eine einfache Pipeline konfigurieren und Daten in eine Amazon OpenSearch -Serverless-Sammlung aufnehmen. Eine Pipeline ist eine Ressource, die OpenSearch Ingestion bereitstellt und verwaltet. Sie können eine Pipeline verwenden, um Daten für nachgelagerte Analysen und Visualisierungen in OpenSearch Service zu filtern, zu anreichern, zu transformieren, zu normalisieren und zu aggregieren.

Ein Tutorial, das zeigt, wie Daten in eine bereitgestellte OpenSearch Service-Domain aufgenommen werden, finden Sie unter Tutorial: Daten mithilfe von Amazon OpenSearch Ingestion in eine Domain aufnehmen.

In diesem Tutorial führen Sie die folgenden Schritte durch:

Im Tutorial erstellen Sie die folgenden Ressourcen:

  • Eine Pipeline mit dem Namen ingestion-pipeline-serverless

  • Eine Sammlung mit dem Namen ingestion-collection , in die die Pipeline schreibt

  • Eine IAM-Rolle mit dem Namen PipelineRole , die die Pipeline übernimmt, um in die Sammlung zu schreiben

Erforderliche Berechtigungen

Um dieses Tutorial abzuschließen, müssen Sie über die richtigen IAM-Berechtigungen verfügen. Ihr Benutzer oder Ihre Rolle muss über eine angefügte identitätsbasierte Richtlinie mit den folgenden Mindestberechtigungen verfügen. Mit diesen Berechtigungen können Sie eine Pipeline-Rolle erstellen (iam:Create*), eine Sammlung erstellen oder ändern (aoss:*) und mit Pipelines arbeiten (osis:*).

Darüber hinaus ist die -iam:PassRoleBerechtigung für die Pipeline-Rollenressource erforderlich. Mit dieser Berechtigung können Sie die Pipeline-Rolle an OpenSearch Ingestion übergeben, damit sie Daten in die Sammlung schreiben kann.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "aoss:*" ] }, { "Resource":[ "arn:aws:iam::{your-account-id}:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

Schritt 1: Erstellen der Pipeline-Rolle

Erstellen Sie zunächst eine Rolle, die die Pipeline übernimmt, um auf die OpenSearch Serverless-Sammlungssenke zuzugreifen. Sie nehmen diese Rolle später in die Pipeline-Konfiguration auf.

So erstellen Sie die Pipeline-Rolle
  1. Öffnen Sie die -AWS Identity and Access ManagementKonsole unter https://console.aws.amazon.com/iamv2/.

  2. Wählen Sie Richtlinien und dann Richtlinie erstellen aus.

  3. Wählen Sie JSON und fügen Sie die folgende Richtlinie in den Editor ein.

    { "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. Wählen Sie Weiter, wählen Sie Weiter und benennen Sie Ihre Richtlinie collection-pipeline-policy.

  5. Wählen Sie Richtlinie erstellen aus.

  6. Erstellen Sie als Nächstes eine Rolle und fügen Sie ihr die Richtlinie an. Wählen Sie Roles (Rollen) und anschließend Create role (Rolle erstellen).

  7. Wählen Sie Benutzerdefinierte Vertrauensrichtlinie und fügen Sie die folgende Richtlinie in den Editor ein:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. Wählen Sie Weiter aus. Suchen Sie dann nach collection-pipeline-policy (die Sie gerade erstellt haben) und wählen Sie sie aus.

  9. Wählen Sie Weiter und benennen Sie die Rolle PipelineRole.

  10. Wählen Sie Rolle erstellen aus.

Denken Sie an den Amazon-Ressourcennamen (ARN) der Rolle (z. B. arn:aws:iam::{your-account-id}:role/PipelineRole). Sie benötigen ihn, wenn Sie Ihre Pipeline erstellen.

Schritt 2: Erstellen einer Sammlung

Erstellen Sie als Nächstes eine Sammlung, in die Daten aufgenommen werden sollen. Wir benennen die Sammlung ingestion-collection.

  1. Navigieren Sie zur Amazon- OpenSearch Service-Konsole unter https://console.aws.amazon.com/aos/home.

  2. Wählen Sie in der linken Navigation Sammlungen und dann Sammlung erstellen aus.

  3. Benennen Sie die Sammlungsaufnahme-Sammlung .

  4. Ändern Sie unter Netzwerkzugriffseinstellungen den Zugriffstyp in Öffentlich.

  5. Behalten Sie alle anderen Einstellungen als Standardwerte bei und wählen Sie Next (Weiter) aus.

  6. Wählen Sie für Definitionsmethode die Option JSON aus und fügen Sie die folgende Richtlinie in den Editor ein. Diese Richtlinie führt zwei Dinge aus:

    • Ermöglicht der Pipeline-Rolle, in die Sammlung zu schreiben.

    • Ermöglicht Ihnen das Lesen aus der Sammlung. Später, nachdem Sie einige Beispieldaten in die Pipeline aufgenommen haben, fragen Sie die Sammlung ab, um sicherzustellen, dass die Daten erfolgreich aufgenommen und in den Index geschrieben wurden.

      [ { "Rules": [ { "Resource": [ "index/ingestion-collection/*" ], "Permission": [ "aoss:CreateIndex", "aoss:UpdateIndex", "aoss:DescribeIndex", "aoss:ReadDocument", "aoss:WriteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::{your-account-id}:role/PipelineRole", "arn:aws:iam::{your-account-id}:role/Admin" ], "Description": "Rule 1" } ]
  7. Ersetzen Sie die Principal Elemente. Der erste Prinzipal sollte die Pipeline-Rolle angeben, die Sie erstellt haben. Die zweite sollte einen Benutzer oder eine Rolle angeben, mit der Sie die Sammlung später abfragen können.

  8. Wählen Sie Weiter aus. Benennen Sie die Zugriffsrichtlinie pipeline-domain-access und wählen Sie erneut Weiter aus.

  9. Überprüfen Sie Ihre Sammlungskonfiguration und wählen Sie Submit (Senden) aus.

Wenn die Sammlung aktiv ist, notieren Sie sich den OpenSearch Endpunkt unter Endpunkt (z. B. https://{collection-id}.us-east-1.aoss.amazonaws.com). Sie benötigen ihn, wenn Sie Ihre Pipeline erstellen.

Schritt 3: Erstellen einer Pipeline

Nachdem Sie nun eine Sammlung und eine Rolle mit den entsprechenden Zugriffsrechten haben, können Sie eine Pipeline erstellen.

So erstellen Sie eine Pipeline
  1. Wählen Sie in der Amazon- OpenSearch Service-Konsole im linken Navigationsbereich Pipelines aus.

  2. Wählen Sie Create pipeline (Pipeline erstellen) aus.

  3. Benennen Sie die Pipeline Serverless-Inestion und behalten Sie die Kapazitätseinstellungen als Standardwerte bei.

  4. In diesem Tutorial erstellen wir eine einfache Unterpipeline namens log-pipeline, die das HTTP-Quell-Plugin verwendet. Das Plugin akzeptiert Protokolldaten in einem JSON-Array-Format. Wir geben eine einzelne OpenSearch Serverless-Sammlung als Senke an und nehmen alle Daten in den my_logs Index auf.

    Fügen Sie unter Pipeline-Konfiguration die folgende YAML-Konfiguration in den Editor ein:

    version: "2" log-pipeline: source: http: path: "/${pipelineName}/test_ingestion_path" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://{collection-id}.us-east-1.aoss.amazonaws.com" ] index: "my_logs" aws: sts_role_arn: "arn:aws:iam::{your-account-id}:role/PipelineRole" region: "us-east-1" serverless: true
  5. Ersetzen Sie die hosts URL durch den Endpunkt der Sammlung, die Sie im vorherigen Abschnitt erstellt haben. Ersetzen Sie den sts_role_arn Parameter durch den ARN von PipelineRole. Ändern Sie optional die region.

  6. Wählen Sie Pipeline validieren und stellen Sie sicher, dass die Validierung erfolgreich ist.

  7. Der Einfachheit halber konfigurieren wir in diesem Tutorial den öffentlichen Zugriff für die Pipeline. Wählen Sie unter Netzwerk die Option Öffentlicher Zugriff aus.

    Informationen zum Konfigurieren des VPC-Zugriffs finden Sie unter Konfiguration des VPC-Zugriffs für Amazon OpenSearch Ingestion-Pipelines.

  8. Lassen Sie die Protokollveröffentlichung aktiviert, falls Sie während des Abschlusses dieses Tutorials auf Probleme stoßen. Weitere Informationen finden Sie unter Überwachen der Pipeline-Protokolle.

    Geben Sie den folgenden Protokollgruppennamen an: /aws/vendedlogs/OpenSearchIngestion/serverless-ingestion/audit-logs

  9. Wählen Sie Weiter aus. Überprüfen Sie Ihre Pipeline-Konfiguration und wählen Sie Pipeline erstellen aus. Es dauert 5–10 Minuten, bis die Pipeline aktiv wird.

Schritt 4: Erfassen einiger Beispieldaten

Wenn der Pipeline-Status lautetActive, können Sie mit der Aufnahme von Daten beginnen. Sie müssen alle HTTP-Anfragen an die Pipeline mit Signature Version 4 signieren. Verwenden Sie ein HTTP-Tool wie Postman oder awscurl, um einige Daten an die Pipeline zu senden. Wie bei der direkten Indizierung von Daten in einer Sammlung erfordert die Aufnahme von Daten in eine Pipeline immer entweder eine IAM-Rolle oder einen IAM-Zugriffsschlüssel und einen geheimen Schlüssel .

Anmerkung

Der Prinzipal, der die Anforderung signiert, muss über die osis:Ingest IAM-Berechtigung verfügen.

Rufen Sie zunächst die Aufnahme-URL von der Seite Pipeline-Einstellungen ab:

Nehmen Sie dann einige Beispieldaten auf. Die folgende Beispielanforderung verwendet awscurl, um eine einzelne Protokolldatei an den my_logs Index zu senden:

awscurl --service osis --region us-east-1 \ -X POST \ -H "Content-Type: application/json" \ -d '[{"time":"2014-08-11T11:40:13+00:00","remote_addr":"122.226.223.69","status":"404","request":"GET http://www.k2proxy.com//hello.html HTTP/1.1","http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)"}]' \ https://{pipeline-endpoint}.us-east-1.osis.amazonaws.com/log-pipeline/test_ingestion_path

Sie sollten eine 200 OK Antwort sehen.

Fragen Sie nun den my_logs Index ab, um sicherzustellen, dass der Protokolleintrag erfolgreich aufgenommen wurde:

awscurl --service aoss --region us-east-1 \ -X GET \ https://{collection-id}.us-east-1.aoss.amazonaws.com/my_logs/_search | json_pp

Beispielantwort:

{ "took":348, "timed_out":false, "_shards":{ "total":0, "successful":0, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"my_logs", "_id":"1%3A0%3ARJgDvIcBTy5m12xrKE-y", "_score":1.0, "_source":{ "time":"2014-08-11T11:40:13+00:00", "remote_addr":"122.226.223.69", "status":"404", "request":"GET http://www.k2proxy.com//hello.html HTTP/1.1", "http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)", "@timestamp":"2023-04-26T05:22:16.204Z" } } ] } }

Zugehörige Ressourcen

In diesem Tutorial wurde ein einfacher Anwendungsfall für die Aufnahme eines einzelnen Dokuments über HTTP vorgestellt. In Produktionsszenarien konfigurieren Sie Ihre Clientanwendungen (wie Fluent Bit, Kubernetes oder OpenTelemetry Collector), um Daten an eine oder mehrere Pipelines zu senden. Ihre Pipelines werden wahrscheinlich komplexer sein als das einfache Beispiel in diesem Tutorial.

Informationen zu den ersten Schritten mit der Konfiguration Ihrer Clients und der Erfassung von Daten finden Sie in den folgenden Ressourcen: