Utilisation d'un pipeline d' OpenSearch ingestion avec le cloud Confluent Kafka - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un pipeline d' OpenSearch ingestion avec le cloud Confluent Kafka

Vous pouvez utiliser Confluent Kafka comme source dans OpenSearch Ingestion pour diffuser des données d'un cluster Confluent Kafka vers un domaine Amazon OpenSearch Service ou une collection Amazon Serverless. OpenSearch OpenSearch L'ingestion prend en charge le traitement des données de streaming provenant de Kafka autogéré dans des espaces réseau publics et privés.

Connectivité au cloud public Kafka Confluent

Vous pouvez utiliser des pipelines d' OpenSearch ingestion pour diffuser des données à partir d'un cluster Confluent Kafka configuré publiquement (le nom DNS du serveur bootstrap doit être résolu publiquement). Pour ce faire, vous aurez besoin d'un pipeline d' OpenSearch ingestion, d'un cluster Kafka confluent comme source et d'un domaine Amazon OpenSearch Service ou d'une collection Amazon OpenSearch Serverless comme destination.

Pour migrer des données, vous devez disposer des éléments suivants :

  • Un cluster Confluent Kafka faisant office de source. Le cluster doit contenir les données que vous souhaitez migrer.

  • Un domaine Amazon OpenSearch Service ou une collection Amazon OpenSearch Serverless faisant office de destination.

  • L'authentification du cluster Kafka doit être activée avec les informations d'identification provenant de AWS Secrets Manager.

Prérequis

Pour activer l'authentification AWS Secrets Manager basée sur votre cluster source autogéré OpenSearch ou sur votre cluster source Elasticsearch, vous devez

  • Configurez l'authentification sur votre cluster Confluent Kafka AWS Secrets Manager en suivant les étapes décrites dans Rotate AWS Secrets Manager secrets.

  • Créez un rôle de pipeline dans IAM avec l'autorisation d'écrire sur un domaine Amazon OpenSearch Service ou une collection Amazon OpenSearch Serverless. Vous devez également spécifier l'autorisation de lire les informations d'identification AWS Secrets Manager. Pour cela :

  • Créez un pipeline d' OpenSearch ingestion en vous référant au plan.

    Une fois ces étapes terminées, votre pipeline commencera automatiquement à traiter les données de votre cluster source et à les intégrer dans votre domaine Amazon OpenSearch Service ou dans la destination de collecte Amazon OpenSearch Serverless. Vous pouvez utiliser différents processeurs dans le pipeline OpenSearch d'ingestion pour effectuer des transformations sur les données ingérées.

Rôles et autorisations IAM

L'exemple de politique d'accès au domaine suivant permet au rôle de pipeline, que vous créez à l'étape suivante, d'écrire des données dans un domaine Amazon OpenSearch Service. Assurez-vous de mettre à jour la ressource avec votre propre ARN.

{ "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" ] } ] }

Les autorisations suivantes sont nécessaires pour gérer l'interface réseau :

{ "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" } } } ] }

L'autorisation requise pour lire les secrets du AWS Secrets Manager service est la suivante :

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

Les autorisations suivantes sont nécessaires pour écrire sur un domaine Amazon OpenSearch Service :

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

Après avoir associé la politique au rôle de pipeline, utilisez le modèle de pipeline de migration de données Confluent Kafka pour créer le pipeline. Ce plan inclut une configuration par défaut pour la migration des données entre Kafka et votre destination.

  • Vous pouvez spécifier plusieurs domaines Amazon OpenSearch Service comme destinations pour vos données. Cette fonctionnalité permet le routage conditionnel ou la réplication des données entrantes dans plusieurs OpenSearch domaines Amazon Service.

  • Vous pouvez migrer les données d'un cluster Confluent Kafka source vers une collection Amazon OpenSearch Serverless VPC. Assurez-vous de fournir une politique d'accès au réseau dans la configuration du pipeline.

  • Vous pouvez utiliser le registre des schémas confluents pour définir un schéma confluent.

L'exemple de pipeline suivant ingère des données d'un cluster Confluent Kafka vers un domaine Amazon OpenSearch Service :

version: "2" kafka-pipeline: source: kafka: # Encryption is always required encryption: type: "ssl" topics: - name: "topic_4" group_id: "demoGroup" bootstrap_servers: # TODO: for public confluent kafka use public booststrap server dns - "<<bootstrap-server>>.us-west-2.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: "${{aws_secrets:confluent-kafka-secret:username}}" password: "${{aws_secrets:confluent-kafka-secret:password}}" # Schema is optional schema: type: confluent registry_url: https://<<registry-url>>.us-west-2.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://<<opensearchdomain>>.us-west-2.es.amazonaws.com" ] index: "enterprise-confluent-demo" aws: sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" region: "<<aws-region>>" extension: aws: secrets: confluent-kafka-secret: secret_id: "enterprise-kafka-credentials" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" schema-secret: secret_id: "self-managed-kafka-schema" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role"

Connectivité au cloud Confluent Kafka en VPC

Vous pouvez utiliser des pipelines OpenSearch d'ingestion pour diffuser des données à partir d'un cluster Confluent Kafka avec une configuration publique. Pour ce faire, configurez un pipeline d' OpenSearch ingestion avec Confluent Kafka comme source et un domaine Amazon OpenSearch Service ou une collection Amazon OpenSearch Serverless comme destination. Le pipeline traite toutes les données de streaming de votre cluster Kafka et ingère les données vers le cluster de destination.

Configuration du réseau Confluent Kafka

OpenSearch L'ingestion prend en charge les clusters Confluent Kafka configurés dans tous les modes réseau pris en charge dans Confluent. Les modes de configuration réseau suivants sont pris en charge en tant que source dans OpenSearch Ingestion.

  • AWS Appairage de VPC

  • AWS PrivateLink pour les clusters dédiés

  • AWS PrivateLink pour les clusters d'entreprise

  • AWS Transit Gateway

Vous pouvez utiliser Kafka géré par Confluent comme source pour ingérer des données depuis un cloud Confluent. Pour ce faire, vous configurez un pipeline dans lequel vous configurez Kafka comme source et un domaine Amazon OpenSearch Service ou une collection Amazon OpenSearch Serverless comme récepteur. Cela facilite la migration des données de Kafka vers la destination désignée. La migration prend également en charge l'utilisation d'un registre confluent ou l'absence de registre du tout.

Pour effectuer la migration des données, vous avez besoin des ressources suivantes :

  • Un cluster Confluent Kafka faisant office de source et contenant les données que vous souhaitez migrer.

  • Une destination cible, telle qu'un domaine Amazon OpenSearch Service ou une collection Amazon OpenSearch Serverless en tant que récepteur.

  • Un identifiant VPC d'Amazon VPC ayant accès à Confluent VPC.

  • L'authentification du cluster Kafka doit être activée avec les informations d'identification provenant de AWS Secrets Manager.

Prérequis

Pour configurer l'ingestion sur votre cluster Kafka, les éléments suivants sont requis :

  • Vous devez activer l'authentification AWS Secrets Manager basée sur votre cluster Kafka.

  • Vous devrez fournir le CIDR VPC à utiliser par OpenSearch le service d'ingestion.

    • Si vous utilisez la console de AWS gestion pour créer votre pipeline, vous devez également associer le pipeline Amazon OpenSearch Ingestion à votre VPC afin d'utiliser Confluent Kafka comme source. Pour ce faire, recherchez la section Configuration réseau, cochez la case Attacher au VPC et choisissez votre CIDR ou entrez manuellement le CIDR /24 à utiliser par l'ingestion. OpenSearch Le CIDR choisi pour être utilisé par OpenSearch Ingestion doit être différent du CIDR VPC sur lequel s'exécute le Kafka géré par Confluent. Plus d'informations sur Confluent Kafka CIDR à éviter ici. Vous trouverez ci-dessous les options CIDR par défaut qui peuvent être utilisées par le service OpenSearch d'ingestion pour créer une connectivité réseau.

      • 10,99,20,0/24

      • 192,168.36,0/24

      • 172,21,56,0/24

  • Vous devrez créer un rôle de pipeline dans IAM avec des autorisations d'accès au domaine Amazon OpenSearch Service ou à la collection Amazon OpenSearch Serverless et l'autorisation d'en lire les secrets. AWS Secrets Manager

    • Associez une politique basée sur les ressources à votre OpenSearch domaine Amazon Service ou une politique d'accès aux données Amazon OpenSearch Serverless à votre collection. Ces politiques d'accès permettent à OpenSearch Ingestion d'écrire des données de votre Kafka vers votre domaine Amazon OpenSearch Service ou votre collection Amazon OpenSearch Serverless.

Rôles et autorisations IAM

L'exemple de politique d'accès au domaine suivant permet au rôle de pipeline d'écrire des données dans un domaine Amazon OpenSearch Service.

Note

Vous devrez le mettre à jour resource avec votre propre ARN.

{ "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" ] } ] }

L'exemple suivant fournit les autorisations nécessaires pour gérer votre interface réseau :

{ "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" } } } ]

L'exemple suivant fournit les autorisations nécessaires pour lire les secrets provenant de AWS Secrets Manager :

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

L'exemple suivant fournit les autorisations nécessaires pour écrire sur un domaine Amazon OpenSearch Service :

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

Après avoir attaché la politique au rôle de pipeline, vous pouvez utiliser le modèle de pipeline de migration de données Confluent Kafka pour créer votre pipeline. Ce plan inclut une configuration par défaut pour la migration des données entre Kafka et votre destination.

  • Vous pouvez spécifier plusieurs domaines Amazon OpenSearch Service comme destinations pour vos données. Cette fonctionnalité permet le routage conditionnel ou la réplication des données entrantes vers plusieurs Amazon OpenSearch Service.

  • Vous pouvez migrer les données d'un cluster Confluent Kafka source vers une collection Amazon OpenSearch Serverless VPC. Assurez-vous de fournir une politique d'accès au réseau dans la configuration du pipeline.

  • Vous pouvez utiliser le registre des schémas Confluent pour définir un schéma Confluent.

Exemple de configuration de pipeline

version: "2" kafka-pipeline: source: kafka: # Encryption is always required encryption: type: "ssl" topics: - name: "topic_4" group_id: "demoGroup" bootstrap_servers: # TODO: for public confluent kafka use public booststrap server dns - "<<bootstrap-server>>.us-west-2.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: "${{aws_secrets:confluent-kafka-secret:username}}" password: "${{aws_secrets:confluent-kafka-secret:password}}" # Schema is optional schema: type: confluent registry_url: https://<<registry-url>>.us-west-2.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://<<opensearchdomain>>.us-west-2.es.amazonaws.com" ] index: "enterprise-confluent-demo" aws: sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" region: "<<aws-region>>" extension: aws: secrets: confluent-kafka-secret: secret_id: "enterprise-kafka-credentials" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" schema-secret: secret_id: "self-managed-kafka-schema" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role"