Verwenden einer OpenSearch Ingestion-Pipeline mit Confluent Cloud Kafka - 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.

Verwenden einer OpenSearch Ingestion-Pipeline mit Confluent Cloud Kafka

Sie können eine OpenSearch Ingestion-Pipeline verwenden, um Daten von Confluent Cloud Kafka-Clustern zu Amazon OpenSearch Service-Domains und serverlosen Sammlungen zu streamen. OpenSearch OpenSearch Ingestion unterstützt sowohl öffentliche als auch private Netzwerkkonfigurationen für das Streaming von Daten aus Confluent Cloud Kafka-Clustern zu Domains oder Sammlungen, die von Service oder Serverless verwaltet werden. OpenSearch OpenSearch

Konnektivität zu öffentlichen Kafka-Clustern von Confluent Cloud

Sie können OpenSearch Ingestion-Pipelines verwenden, um Daten aus einem Confluent Cloud Kafka-Cluster mit einer öffentlichen Konfiguration zu migrieren, was bedeutet, dass der Domain-DNS-Name öffentlich aufgelöst werden kann. Richten Sie dazu eine OpenSearch Ingestion-Pipeline mit dem öffentlichen Kafka-Cluster von Confluent Cloud als Quelle und Service oder Serverless als Ziel ein. OpenSearch OpenSearch Dadurch werden Ihre Streaming-Daten von einem selbstverwalteten Quellcluster zu einer verwalteten Zieldomäne oder -sammlung verarbeitet. AWS

Voraussetzungen

Bevor Sie Ihre OpenSearch Ingestion-Pipeline erstellen, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen Confluent Cloud Kafka-Cluster-Cluster, der als Quelle fungiert. Der Cluster sollte die Daten enthalten, die Sie in den Service aufnehmen möchten. OpenSearch

  2. Erstellen Sie eine OpenSearch Dienstdomäne oder eine OpenSearch serverlose Sammlung, in die Sie Daten migrieren möchten. Weitere Informationen erhalten Sie unter OpenSearch Dienstdomänen erstellen und Erstellen von Sammlungen.

  3. Richten Sie die Authentifizierung auf Ihrem Confluent Cloud Kafka-Cluster mit ein. AWS Secrets ManagerAktivieren Sie die Rotation von Geheimnissen, indem Sie die Schritte unter Geheimnisse rotieren befolgen. AWS Secrets Manager

  4. Fügen Sie Ihrer Domain eine ressourcenbasierte Richtlinie oder Ihrer Sammlung eine Datenzugriffsrichtlinie hinzu. Diese Zugriffsrichtlinien ermöglichen es OpenSearch Ingestion, Daten aus Ihrem selbstverwalteten Cluster in Ihre Domain oder Sammlung zu schreiben.

    Die folgende Beispielrichtlinie für den Domänenzugriff ermöglicht es der Pipeline-Rolle, die Sie im nächsten Schritt erstellen, Daten in eine Domäne zu schreiben. Stellen Sie sicher, dass Sie das resource mit Ihrem eigenen ARN aktualisieren.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::pipeline-account-id:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name" ] } ] }

    Informationen zum Erstellen einer IAM-Rolle mit den richtigen Berechtigungen für den Zugriff auf Schreibdaten für die Sammlung oder Domäne finden Sie unterRollen und Benutzer in Amazon OpenSearch Ingestion einrichten.

Schritt 1: Konfigurieren Sie die Pipeline-Rolle

Nachdem Sie die Voraussetzungen für Ihre Confluent Cloud Kafka-Cluster-Pipeline eingerichtet haben, konfigurieren Sie die Pipeline-Rolle, die Sie in Ihrer Pipeline-Konfiguration verwenden möchten, und fügen Sie die Berechtigung hinzu, in eine OpenSearch Service-Domain oder eine OpenSearch Serverless-Sammlung zu schreiben, sowie die Erlaubnis, Geheimnisse aus Secrets Manager zu lesen.

Für die Verwaltung der Netzwerkschnittstelle ist die folgende Berechtigung erforderlich:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

Die folgende Berechtigung ist erforderlich, um Geheimnisse aus dem AWS Secrets Manager Dienst zu lesen:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": ["secretsmanager:GetSecretValue"], "Resource": ["arn:aws:secretsmanager:region:account-id:secret:,secret-name"] } ] }

Die folgenden Berechtigungen sind erforderlich, um in eine Amazon OpenSearch Service-Domain zu schreiben:

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/pipeline-role" }, "Action": ["es:DescribeDomain", "es:ESHttp*"], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

Schritt 2: Erstellen Sie die Pipeline

Anschließend können Sie eine OpenSearch Ingestion-Pipeline wie die folgende konfigurieren, die Ihr Confluent Cloud Kafka als Quelle angibt.

Sie können mehrere OpenSearch Service-Domains als Ziele für Ihre Daten angeben. Diese Funktion ermöglicht das bedingte Routing oder die Replikation eingehender Daten in mehrere OpenSearch Dienstdomänen.

Sie können auch Daten von einem Confluent Kafka-Quellcluster zu einer OpenSearch serverlosen VPC-Sammlung migrieren. Stellen Sie sicher, dass Sie in der Pipeline-Konfiguration eine Netzwerkzugriffsrichtlinie angeben. Sie können eine Confluent-Schemaregistrierung verwenden, um ein Confluent-Schema zu definieren.

version: "2" kafka-pipeline: source: kafka: encryption: type: "ssl" topics: - name: "topic-name" group_id: "group-id" bootstrap_servers: - "bootstrap-server.us-east-1.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: ${aws_secrets:confluent-kafka-secret:username} password: ${aws_secrets:confluent-kafka-secret:password} schema: type: confluent registry_url: https://my-registry.us-east-1.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: region: "us-east-1" aws: secrets: confluent-kafka-secret: secret_id: "my-kafka-secret" region: "us-east-1" schema-secret: secret_id: "my-self-managed-kafka-schema" region: "us-east-1"

Sie können einen vorkonfigurierten Blueprint verwenden, um diese Pipeline zu erstellen. Weitere Informationen finden Sie unter Mit Blueprints arbeiten.

Konnektivität zu Confluent Cloud Kafka-Clustern in einer VPC

Sie können OpenSearch Ingestion-Pipelines auch verwenden, um Daten aus einem Confluent Cloud Kafka-Cluster zu migrieren, der in einer VPC ausgeführt wird. Richten Sie dazu eine OpenSearch Ingestion-Pipeline mit einem Confluent Cloud Kafka-Cluster als Quelle und Service oder Serverless als Ziel ein. OpenSearch OpenSearch Dadurch werden Ihre Streaming-Daten von einem Confluent Cloud Kafka-Quellcluster zu einer verwalteten Zieldomain oder -sammlung verarbeitet. AWS

OpenSearch Ingestion unterstützt Confluent Cloud Kafka-Cluster, die in allen unterstützten Netzwerkmodi in Confluent konfiguriert sind. Die folgenden Modi der Netzwerkkonfiguration werden als Quelle in Ingestion unterstützt: OpenSearch

  • AWS VPC-Peering

  • AWS PrivateLink für dedizierte Cluster

  • AWS PrivateLink für Unternehmenscluster

  • AWS Transit Gateway

Voraussetzungen

Bevor Sie Ihre OpenSearch Ingestion-Pipeline erstellen, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen Confluent Cloud Kafka-Cluster mit einer VPC-Netzwerkkonfiguration, die die Daten enthält, die Sie in Service aufnehmen möchten. OpenSearch

  2. Erstellen Sie eine OpenSearch Service-Domain oder eine OpenSearch serverlose Sammlung, in die Sie Daten migrieren möchten. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter OpenSearch Dienstdomänen erstellen undErstellen von Sammlungen.

  3. Richten Sie die Authentifizierung auf Ihrem Confluent Cloud Kafka-Cluster mit ein. AWS Secrets ManagerAktivieren Sie die Rotation von Geheimnissen, indem Sie die Schritte unter Geheimnisse rotieren befolgen. AWS Secrets Manager

  4. Rufen Sie die ID der VPC ab, die Zugriff auf den Confluent Cloud Kafka-Cluster hat. Wählen Sie die VPC CIDR aus, die von OpenSearch Ingestion verwendet werden soll.

    Anmerkung

    Wenn Sie die verwenden, um Ihre Pipeline AWS Management Console zu erstellen, müssen Sie auch Ihre OpenSearch Ingestion-Pipeline an Ihre VPC anhängen, um den Confluent Cloud Kafka-Cluster verwenden zu können. Suchen Sie dazu den Abschnitt Netzwerkkonfiguration, aktivieren Sie das Kontrollkästchen An VPC anhängen und wählen Sie Ihr CIDR aus einer der bereitgestellten Standardoptionen oder wählen Sie Ihre eigene aus. Sie können jedes CIDR aus einem privaten Adressraum verwenden, wie in der RFC 1918 Best Current Practice definiert.

    Um ein benutzerdefiniertes CIDR bereitzustellen, wählen Sie im Dropdownmenü die Option Andere aus. Um eine Kollision der IP-Adressen zwischen OpenSearch Ingestion und Self-managed zu vermeiden, stellen Sie sicher OpenSearch, dass sich das selbstverwaltete OpenSearch VPC-CIDR vom CIDR für Ingestion unterscheidet. OpenSearch

  5. Fügen Sie Ihrer Domain eine ressourcenbasierte Richtlinie oder Ihrer Sammlung eine Datenzugriffsrichtlinie hinzu. Diese Zugriffsrichtlinien ermöglichen es OpenSearch Ingestion, Daten aus Ihrem selbstverwalteten Cluster in Ihre Domain oder Sammlung zu schreiben.

    Anmerkung

    Wenn Sie Ihre Confluent Cloud Kafka für die Verbindung verwenden AWS PrivateLink , müssen Sie die VPC-DHCP-Optionen konfigurieren. DNS-Hostnamen und DNS-Auflösung sollten aktiviert sein.

    Verwenden Sie insbesondere die folgenden Optionssatzwerte:

    domain-name: aws.private.confluent.cloud domain-name-servers: AmazonProvidedDNS

    Diese Änderung stellt sicher, dass die DNS-Auflösung für den PrivateLink Confluent-Endpunkt innerhalb der VPC korrekt funktioniert.

    Die folgende Beispielrichtlinie für den Domänenzugriff ermöglicht es der Pipeline-Rolle, die Sie im nächsten Schritt erstellen, Daten in eine Domain zu schreiben. Stellen Sie sicher, dass Sie das resource mit Ihrem eigenen ARN aktualisieren.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::pipeline-account-id:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name" ] } ] }

    Informationen zum Erstellen einer IAM-Rolle mit den richtigen Berechtigungen für den Zugriff auf Schreibdaten für die Sammlung oder Domäne finden Sie unterRollen und Benutzer in Amazon OpenSearch Ingestion einrichten.

Schritt 1: Konfigurieren Sie die Pipeline-Rolle

Nachdem Sie Ihre Pipeline-Voraussetzungen eingerichtet haben, konfigurieren Sie die Pipeline-Rolle, die Sie in Ihrer Pipeline-Konfiguration verwenden möchten, und fügen Sie der Rolle die folgenden Berechtigungen hinzu:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": ["arn:aws:secretsmanager:region:account-id:secret:secret-name"] }, { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

Sie müssen die oben genannten EC2 Amazon-Berechtigungen für die IAM-Rolle bereitstellen, mit der Sie die OpenSearch Ingestion-Pipeline erstellen, da die Pipeline diese Berechtigungen verwendet, um eine Netzwerkschnittstelle in Ihrer VPC zu erstellen und zu löschen. Die Pipeline kann nur über diese Netzwerkschnittstelle auf den Kafka-Cluster zugreifen.

Schritt 2: Erstellen Sie die Pipeline

Anschließend können Sie eine OpenSearch Ingestion-Pipeline wie die folgende konfigurieren, die Kafka als Quelle angibt.

Sie können mehrere OpenSearch Dienstdomänen als Ziele für Ihre Daten angeben. Diese Funktion ermöglicht das bedingte Routing oder die Replikation eingehender Daten in mehrere OpenSearch Dienstdomänen.

Sie können auch Daten von einem Confluent Kafka-Quellcluster zu einer OpenSearch serverlosen VPC-Sammlung migrieren. Stellen Sie sicher, dass Sie in der Pipeline-Konfiguration eine Netzwerkzugriffsrichtlinie angeben. Sie können eine Confluent-Schemaregistrierung verwenden, um ein Confluent-Schema zu definieren.

version: "2" kafka-pipeline: source: kafka: encryption: type: "ssl" topics: - name: "topic-name" group_id: "group-id" bootstrap_servers: - "bootstrap-server.us-east-1.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: ${aws_secrets:confluent-kafka-secret:username} password: ${aws_secrets:confluent-kafka-secret:password} schema: type: confluent registry_url: https://my-registry.us-east-1.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] aws: region: "us-east-1" index: "confluent-index" extension: aws: secrets: confluent-kafka-secret: secret_id: "my-kafka-secret" region: "us-east-1" schema-secret: secret_id: "my-self-managed-kafka-schema" region: "us-east-2"