Utilisation d'un pipeline OpenSearch d'ingestion avec Amazon Managed Streaming for Apache 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 OpenSearch d'ingestion avec Amazon Managed Streaming for Apache Kafka

Vous pouvez utiliser le plugin Kafka pour intégrer les données d'Amazon Managed Streaming for Apache Kafka (MSKAmazon) OpenSearch dans votre pipeline d'ingestion. Amazon MSK vous permet de créer et d'exécuter des applications qui utilisent Apache Kafka pour traiter des données en streaming. OpenSearch Ingestion utilise AWS PrivateLink pour se connecter à AmazonMSK. Vous pouvez ingérer des données provenant de clusters Amazon MSK et Amazon MSK Serverless. La seule différence entre les deux processus réside dans les étapes préalables que vous devez suivre avant de configurer votre pipeline.

MSKConditions préalables d'Amazon

Avant de créer votre pipeline OpenSearch d'ingestion, effectuez les étapes suivantes :

  1. Créez un cluster MSK provisionné par Amazon en suivant les étapes décrites dans la section Création d'un cluster dans le guide du développeur Amazon Managed Streaming for Apache Kafka. Pour le type de courtier, choisissez n'importe quelle option à l'exception des t3 types, car ceux-ci ne sont pas pris en charge par OpenSearch Ingestion.

  2. Une fois que le cluster a atteint le statut Actif, suivez les étapes décrites dans Activer la VPC multiconnectivité.

  3. Suivez les étapes décrites dans Attacher une politique de MSK cluster au cluster pour associer l'une des politiques suivantes, selon que votre cluster et votre pipeline sont identiques ou non Compte AWS. Cette politique permet à OpenSearch Ingestion de créer une AWS PrivateLink connexion à votre MSK cluster Amazon et de lire les données des rubriques Kafka. Assurez-vous de le mettre à jour resource avec le vôtreARN.

    Les règles suivantes s'appliquent lorsque votre cluster et votre pipeline se trouvent dans le même environnement Compte AWS :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Si votre MSK cluster Amazon se trouve dans un pipeline différent Compte AWS de celui de votre pipeline, joignez plutôt la politique suivante. Notez que l'accès entre comptes n'est possible qu'avec les clusters Amazon provisionnés et non avec les MSK clusters Amazon MSK Serverless. Le ARN for AWS principal doit correspondre au ARN même rôle de pipeline que celui que vous avez fourni à votre YAML configuration de pipeline :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "kafka-cluster:*", "kafka:*" ], "Resource": [ "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id", "arn:aws:kafka:us-east-1:{msk-account-id}:topic/cluster-name/cluster-id/*", "arn:aws:kafka:us-east-1:{msk-account-id}:group/cluster-name/*" ] } ] }
  4. Créez un sujet Kafka en suivant les étapes décrites dans Créer un sujet. Assurez-vous qu'il s'BootstrapServerStringagit de l'un des bootstrap URLs (single-VPC) du point de terminaison privé. La valeur de --replication-factor doit être 2 ou3, en fonction du nombre de zones de votre MSK cluster Amazon. La valeur pour --partitions doit être au moins égale à10.

  5. Produisez et consommez des données en suivant les étapes décrites dans la section Produire et consommer des données. Encore une fois, assurez-vous qu'il s'BootstrapServerStringagit de l'un des bootstrap URLs (single-VPC) de votre point de terminaison privé.

Conditions préalables à Amazon MSK Serverless

Avant de créer votre pipeline OpenSearch d'ingestion, effectuez les étapes suivantes :

  1. Créez un cluster Amazon MSK Serverless en suivant les étapes décrites dans la section Créer un cluster MSK sans serveur du manuel Amazon Managed Streaming for Apache Kafka Developer Guide.

  2. Une fois que le cluster a atteint le statut Actif, suivez les étapes décrites dans Attacher une politique de MSK cluster au cluster pour associer la stratégie suivante. Assurez-vous de le mettre à jour resource avec le vôtreARN.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Cette politique permet à OpenSearch Ingestion de créer une AWS PrivateLink connexion à votre cluster Amazon MSK Serverless et de lire les données des rubriques Kafka. Cette politique s'applique lorsque votre cluster et votre pipeline sont identiques Compte AWS, ce qui doit être vrai car Amazon MSK Serverless ne prend pas en charge l'accès entre comptes.

  3. Créez un sujet Kafka en suivant les étapes décrites dans Créer un sujet. Assurez-vous qu'il s'BootstrapServerStringagit de l'un de vos IAM bootstrap URLs Simple Authentication and Security Layer (SASL). La valeur de --replication-factor doit être 2 ou3, en fonction du nombre de zones de votre cluster Amazon MSK Serverless. La valeur pour --partitions doit être au moins égale à10.

  4. Produisez et consommez des données en suivant les étapes décrites dans la section Produire et consommer des données. Encore une fois, assurez-vous qu'il s'BootstrapServerStringagit de l'un de vos IAM bootstrap URLs Simple Authentication and Security Layer (SASL).

Étape 1 : configurer le rôle du pipeline

Après avoir configuré votre cluster Amazon MSK provisionné ou sans serveur, ajoutez les autorisations Kafka suivantes dans le rôle de pipeline que vous souhaitez utiliser dans la configuration de votre pipeline :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster", "kafka:DescribeClusterV2", "kafka:GetBootstrapBrokers" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:topic/cluster-name/cluster-id/topic-name" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:group/cluster-name/*" ] } ] }

Étape 2 : Création du pipeline

Vous pouvez ensuite configurer un pipeline d' OpenSearch ingestion comme celui-ci, qui spécifie Kafka comme source :

version: "2" log-pipeline: source: kafka: acknowledgements: true topics: - name: "topic-name" group_id: "group-id" aws: msk: arn: "arn:aws:kafka:{region}:{account-id}:cluster/cluster-name/cluster-id" region: "us-west-2" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" processor: - grok: match: message: - "%{COMMONAPACHELOG}" - date: destination: "@timestamp" from_time_received: true sink: - opensearch: hosts: ["https://search-domain-endpoint.us-east-1.es.amazonaws.com"] index: "index_name" aws_sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" aws_region: "us-east-1" aws_sigv4: true

Vous pouvez utiliser un MSK plan Amazon préconfiguré pour créer ce pipeline. Pour plus d’informations, consultez Utiliser des plans pour créer un pipeline.

Étape 3 : (Facultatif) Utiliser le registre des AWS Glue schémas

Lorsque vous utilisez OpenSearch Ingestion avec AmazonMSK, vous pouvez utiliser le format de AVRO données pour les schémas hébergés dans le registre des AWS Glue schémas. Avec le registre des AWS Glue schémas, vous pouvez découvrir, contrôler et faire évoluer les schémas de flux de données de manière centralisée.

Pour utiliser cette option, activez le schéma type dans la configuration de votre pipeline :

schema: type: "aws_glue"

Vous devez également fournir des AWS Glue autorisations d'accès en lecture dans votre rôle de pipeline. Vous pouvez utiliser la politique AWS gérée appelée AWSGlueSchemaRegistryReadonlyAccess. De plus, votre registre doit se trouver dans la même Compte AWS région que votre pipeline OpenSearch d'ingestion.

Étape 4 : (Facultatif) Configurer les unités de calcul recommandées (OCUs) pour le MSK pipeline Amazon

Chaque unité de calcul a un consommateur par sujet. Les courtiers équilibrent les différences entre ces consommateurs pour un sujet donné. Toutefois, lorsque le nombre de partitions est supérieur au nombre de consommateurs, Amazon MSK héberge plusieurs partitions pour chaque consommateur. OpenSearch Ingestion intègre une mise à l'échelle automatique pour augmenter ou diminuer en fonction de CPU l'utilisation ou du nombre d'enregistrements en attente dans le pipeline.

Pour des performances optimales, répartissez vos partitions sur de nombreuses unités de calcul pour un traitement parallèle. Si les rubriques comportent un grand nombre de partitions (par exemple, plus de 96, ce qui est le maximum OCUs par pipeline), nous vous recommandons de configurer un pipeline de 1 à 96OCUs. Cela est dû au fait qu'il sera automatiquement redimensionné selon les besoins. Si un sujet comporte un faible nombre de partitions (par exemple, moins de 96), maintenez l'unité de calcul maximale identique au nombre de partitions.

Lorsqu'un pipeline comporte plusieurs sujets, choisissez le sujet contenant le plus grand nombre de partitions comme référence pour configurer le maximum d'unités de calcul. En ajoutant un autre pipeline avec un nouvel ensemble de produits OCUs au même sujet et au même groupe de consommateurs, vous pouvez augmenter le débit de manière presque linéaire.